Вычислите гистограмму действительных и комплексных данных

Контуры интервала, созданные блоком Histogram, определяются по условию тип входа. Следующие две модели показывают различия в выходе блока Histogram на основе типа данных входа.

Действительные входные данные

Когда входные данные действительны, контуры интервала брошены в тип данных входа.

Откройте модель.

modelRealData = fullfile(matlabroot,'examples','dsp','ex_realData_hist');
open_system(modelRealData)

Запустите модель.

sim(modelRealData)
Warning: Reported in '<a href="matlab:open_and_hilite_hyperlink
('ex_realData_hist/Histogram1','error')">ex_realData_hist/Histogram1</a>': The
bin width resulting from the specified parameters is less than the precision of
the input data type. This might cause unexpected results. Since bin width is
calculated by ((upper limit - lower limit)/number of bins), you could increase
upper limit or decrease lower limit or number of bins. 

Блок производит две гистограммы выходные параметры.

Выход блока Histogram отличается на основе типа данных входа. Предупреждение происходит во втором блоке гистограммы, где контуры интервала являются uint8 ([1 1.4 1.8 2.2 2.6 3.0]) = [1 1 2 2 3 3]. Ширина первых и третьих интервалов 0, и точность данных равняется 1. Блок ожидает, что ширина каждого интервала будет, по крайней мере, равна 1.

Чтобы разрешить это предупреждение, увеличьте верхний предел второго блока Histogram к 7 и сократите число интервалов к 2. Ширина интервала становится ((7-1)/2) = 3. С целочисленным входом новые контуры интервала являются uint8 [1 4 7] = [1 4 7]. Интервалы распространены более равномерно.

set_param('ex_realData_hist/Histogram1','umax','7','nbins','2');

Симулируйте модель. Предупреждение больше не появляется и интервалы, распространенные более равномерно.

sim(modelRealData)

Комплексные входные данные

Когда входные данные являются комплексными:

  • Контуры интервала для входных параметров с двойной точностью брошены в двойной тип данных. Все комплексные, входные значения с двойной точностью помещаются в интервалы согласно своей величине, которая является квадратным корнем из суммы квадратов действительных и мнимых частей.

  • Контуры интервала для целочисленных входных параметров брошены в тип данных дважды и в квадрате. Весь комплекс, целочисленные входные значения помещаются в интервалы согласно своему значению в квадрате величиной.

Откройте модель.

modelComplexData = fullfile(matlabroot,'examples','dsp','ex_complexData_hist');
open_system(modelComplexData)

Запустите модель.

sim(modelComplexData)
Warning: Reported in '<a href="matlab:open_and_hilite_hyperlink
('ex_complexData_hist/Histogram1','error')">ex_complexData_hist/Histogram1</a>':
The bin width resulting from the specified parameters is less than the precision
of the input data type. This might cause unexpected results. Since bin width is
calculated by ((upper limit - lower limit)/number of bins), you could increase
upper limit or decrease lower limit or number of bins. 

Модель производит две гистограммы выходные параметры.

Главный рисунок показывает гистограмму для входа с двойной точностью, и нижний рисунок показывает гистограмму для целочисленного входа. Входные параметры с двойной точностью нормированы для сравнения, тогда как целочисленные входные параметры помещаются с помощью их значения в квадрате величиной. Предупреждение происходит во втором блоке гистограммы, где контуры интервала являются [1 (1.4) ² (1.8) ² (2.2) ² (2.6) ² (3.0) ²]. Точность данных - по крайней мере 6, и ширина интервалов меньше 2.

Чтобы разрешить это предупреждение, увеличьте верхний предел второго блока Histogram к 10. С новым верхним пределом контуры интервала являются [1 (2.8) ² (4.6) ² (6.4) ² (8.2) ² 10 ²] = [1 7.84 21.16 40.96 67.24 100].

set_param('ex_complexData_hist/Histogram1','umax','10');

Симулируйте модель. Предупреждение больше не появляется, и интервалы во втором блоке Histogram распространены более равномерно.

sim(modelComplexData)

Сохраните и закройте модели.

save_system(modelRealData);
save_system(modelComplexData)
close_system(modelRealData);
close_system(modelComplexData);

Смотрите также

Блоки