Файл – функция (процедура) должна начинается со строки заголовка следующего вида:
function [< Список_Переменых_Результатов>] = <имя_процедуры> (<Список_ Входных_Переменых>)
Если Список_Переменых_Результатов (СПР) содержит только одну переменную (в общем случае, матрицу), то файл – функция представляет собой обычную функцию одной, или нескольких переменных. Первая строка в этом случае имеет вид:
function <имя_переменной>= <имя_процедуры> (<Список_Входных_Переменных >).
Если в результате выполнения файл – функции должны быть выписаны несколько выходных переменных, то первая строка примет вид:
function [y1, y2,…,yn] = <имя_процедуры> (<Список_Входных_Переменных >).
Таким образом, СПР должны быть представлены как вектор – строка с элементами y1, y2, …, yn, при этом все они, в свою очередь, могут быть матрицами.
Примеры оформления файлов – функций.
В первом примере происходит вычисление функции:
Файл – функция для ее вычисления выглядит следующим образом:
function Form_1 = F2(x,d)
%Пример оформления файла - функции
%Обращение: y = F1(x,d)
Form_1 = (d^2)*cot(x).*sqrt(sin(x));
Обращение к этой функции может быть следующим:
>> D = 4;
>> arg = 0:0.3:1.8;
>> Res = F2(arg,D);
Предупреждение: Деление на ноль.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
> In C:\MATLAB6p5\toolbox\matlab\elfun\cot.m at line 8
In D:\AVK\Instr_Means\LabWorks\F2.m at line 4
Сообщение о делении на 0 выдается интерпретирующей системой MATLAB появляется из – за того, что значение функции котангенс в точке 0, как известно, равно ∞. Для подавления печати этого сообщения следует ввести команду warning off MATLAB:divideByZero. Это можно сделать как в диалоговом режиме, так и введя эту команду в тело функции. График значений вычисленной функции для данного примера имеет вид:
Пример файл – функции, вычисляющего значения сразу двух функций:
function y = Function_2(x)
%Вычисление двух функций.
%y(:,1) - означает 1-й столбец матрицы y;
%y(:,2) - означает 2-й столбец матрицы y;
y(:,1) = 200*sin(x(:))./x(:);
y(:,2) = x(:).^2;
В этом примере результирующая матрица состоит из двух столбцов: в первый столбец заносятся результаты вычисления первой функции, а во второй столбец – значения второй функции. Оператор «:» для матрицы x означает, что все ее элементы как единый вектор – столбец, все элементы которого есть столбцы исходной матрицы, размещенные сверху вниз в порядке самих столбцов, как это показано в следующем примере:
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> A(:)
ans =
Такое преобразование является обязательным, поскольку результатом работы файл – функции является матрица. Следует отметить, что при вычислении первой функции при х = 0 возникает неопределенность. Для построения графиков функций такого сорта удобно пользоваться функцией fplot, которая автоматически распознает подобные коллизии. Обращение к этой функции, в общем случае, имеет следующий вид:
fplot(«имя_функции», <диапазон аргумента >), где:
· «имя_функции» - символьное имя функции, график которой необходимо построить;
· <диапазон аргумента > - диапазон изменения аргумента функции.
Диапазон представлен как вектор, указывающий верхнюю и нижнюю границы по оси абсцисс ([xmin xmax]), или по обеим осям ([xmin xmax ymin ymax]).
Так, для построения графика функции Function_2(x) для значений аргумента от -20 до +20 достаточно написать следующий оператор:
fplot('Function_2',[-20 20]);
Результат работы данной функции приведен на рисунке.
3. Порядок выполнения работы.
3.1. В соответствие с заданием к лабораторной работе №2, разработать файл – функцию, реализующий тот же цифровой фильтр. В качестве входных переменных должны быть указаны:
· Массив коэффициентов фильтра;
· Массив значений исходных данных в соответствии с заданием к лабораторной работе №3.
Дл определения размера массива исходных данных следует воспользоваться стандартной функцией MATLAB length, результатом работы которой является количество элементов в массиве. Обращение к этой функции имеет следующий вид (пример):
Size = length(Y); где Y – массив, количество элементов которого нужно определить.
3.2. Проверить работу файл – функции и сравнить полученные результаты с результатами из лабораторной работы №3.
3.3. По заданию преподавателя, задать в качестве входных переменных массивы коэффициентов и значений исходных данных другого варианта фильтра. Проверить работу файл – функции с этими исходными данными.
3.4. Разработать файл – функцию, следующие передаточные функции:
· Передаточную функцию нерекурсивного фильтра в соответствии с формулой (5) из лабораторной работы №3:
H(f) = 2aCos(2πf )+ b
Параметрами файл – функции должны быть коэффициенты a и b, определяющие фильтр. Частота f должна изменяться в пределах от 0 до 0.5.
· Передаточную функцию рекурсивного интегрирующего фильтра в соответствии с формулой:
Построить графики передаточных функций. При построении графика второй функции следует учесть, что при f = 0 возникает неопределенность.
4. Содержание отчета.
Отчет должен содержать краткие пояснения по разработке файл – функций, и результаты их работы. Результаты работы файл – функций должны быть представлены в виде графиков их работы. В отчете должны быть приведены краткие выводы по проделанной работе.