В следующем примере показано, как создать в Simulink ® фильтр FIR с фиксированными точками и нижними полосами. Для создания фильтра FIR используется программное обеспечение Fixed-Point Designer™ и функциональный блок MATLAB. В этом примере в показанной последовательности выполняются следующие задачи:
Поместите функциональный блок MATLAB в новую модель. Блок можно найти в библиотеке пользовательских функций Simulink.
Сохранение модели как cgen_fi.
Дважды щелкните блок функции MATLAB в модели, чтобы открыть редактор функциональных блоков MATLAB. Введите или скопируйте и вставьте в редактор следующий код MATLAB ®, включая комментарии:
function [yout,zf] = dffirdemo(b, x, zi) %#codegen
%codegen_fi doc model example
%Initialize the output signal yout and the final conditions zf
Ty = numerictype(1,12,8);
yout = fi(zeros(size(x)),'numerictype',Ty);
zf = zi;
% FIR filter code
for k=1:length(x);
% Update the states: z = [x(k);z(1:end-1)]
zf(:) = [x(k);zf(1:end-1)];
% Form the output: y(k) = b*z
yout(k) = b*zf;
end
% Plot the outputs only in simulation.
% This does not generate C code.
figure;
subplot(211);plot(x); title('Noisy Signal');grid;
subplot(212);plot(yout); title('Filtered Signal');grid;Определите коэффициенты фильтра b, шум x и начальные условия zi, введя следующий код в командной строке MATLAB:
b=fidemo.fi_fir_coefficients; load mtlb x = mtlb; n = length(x); noise = sin(2*pi*2140*(0:n-1)'./Fs); x = x + noise; zi = zeros(length(b),1);
Добавьте блоки в модель для создания следующей системы.

Задайте для параметров блока в модели значения примера параметров FIR-кода с фиксированной точкой.
На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). Установите следующие параметры конфигурации.
| Параметр | Стоимость |
|---|---|
| Время остановки | 0 |
| Напечатать | Fixed-step |
| Решающее устройство | discrete (no continuous states) |
Нажмите кнопку Применить, чтобы сохранить изменения.
Откройте для модели обозреватель моделей.
Щелкните узел cgen_fi > Функция MATLAB на панели Иерархия модели. Диалоговое окно для блока Функция MATLAB (MATLAB Function) появится на панели Диалоговое окно (Dialog) Проводника моделей (Model Explorer).
Выберите «Указать другое» для параметра fimath функционального блока MATLAB в диалоговом окне функционального блока MATLAB. Затем можно создать следующее: fimath объект в поле редактирования:
fimath('RoundingMethod','Floor','OverflowAction','Wrap',...
'ProductMode','KeepLSB','ProductWordLength',32,...
'SumMode','KeepLSB','SumWordLength',32)
fimath определяемый здесь объект связан с вводами с фиксированной точкой в блок MATLAB Function, а также fi объект, который создается внутри блока.
Выбрав опцию Указать другое (Specify other) для fimath функционального блока MATLAB (MATLAB Function block), вы убедитесь, что модель всегда использует fimath указанные свойства.
Запустите моделирование, выбрав модель и набрав Ctrl + T. Во время моделирования информация выводится в командную строку MATLAB. Можно посмотреть графики шумного сигнала и отфильтрованного сигнала.
Затем создайте встраиваемый код C для модели, выбрав модель и набрав Ctrl + B. Во время построения кода информация выводится в командную строку MATLAB. Папка с именемcoder_fi_grt_rtw создается в текущей рабочей папке.
Перейти к coder_fi_grt_rtw > cgen_fi.c. В этом файле можно увидеть код, созданный в модели. Выполните поиск следующего комментария в коде:
/* codegen_fi doc model example */