Допустим, что требуется подсчитать количество цифр 5, 4 и 3 в заданном массиве и, кроме того, найти количество всех элементов, отличных от этих цифр. Это можно сделать с помощью файл-функции:
function [n5,n4,n3,ni]=sum543i(X)
n5=0; n4=0; n3=0; ni=0;
for i=1:length(X)
switch X(i)
case 5
n5=n5+1;
case 4
n4=n4+1;
case 3
n3=n3+1;
otherwise
ni=ni+1;
end
end
Пример использования этой функции:
>> X=[4 5 4 4 3 3 5 2 2 5 5 2 3 3 3];
>> [n1 n2 n3 n4]=sum543i(X)
n1 =
n2 =
n3 =
n4 =
Блок case может быть выполнен не только при одном определенном значении переключателя, но и в том случае, когда переключатель принимает одно значение из множества допустимых значений. В этом случае значения указываются после слова case в фигурных скобках через запятую, например: case {1,2,3}.
3.6. Комментарии в М – функциях
В М – функциях можно использовать комментарии. Комментарий должен начинаться с символа %. Комментарий может занимать целую строку, либо располагаться в конце любой строки кода.
Особую роль в системе MATLAB имеют комментарии, располагающиеся сразу за заголовком функции. Весь этот набор строк выводится в командное окно системы MATLAB при исполнении команды
>> help <имя_M-функции>
В теле функции можно использовать специальные команды для анализа хода вычислений:
- Команда error(‘сообщение об ошибке’) выводит сообщение об ошибке и останавливает работу.
- Команда warning(‘предупреждающее сообщение’) выводит предупреждение и продолжает программу.
Пример:
function Z=del_sum(X,Y)
% Отношение суммы всех элементов одного вектора
% к сумме всех элементов второго вектора
V=sum(Y);
if V==0 error('Ошибка. Деление на ноль')
end
Z=sum(X)/V;
Пример использования этой функции:
>> X=[1 2 3 4];
>> Y=[1 1 1 1];
>> Z=del_sum(X,Y)
Z =
2.5000
3.7. Ввод и вывод информации
Для ввода информации служит функция INPUT, которая может сопровождаться поясняющим текстом. Например:
>> x=input('введите х:')
введите х:5
x =
Рассмотрим построчный ввод вектора длиной N элементов. Он может быть реализован с помощью следующей функции:
function Y=vvod(N)
for i=1:N
Y(i)=input('введите элемент вектора: ');
end
Пример использования этой функции:
>> Y=vvod(3)
введите элемент вектора: 7
введите элемент вектора: 6
введите элемент вектора: 5
Y =
7 6 5
Отображение переменных выполняется с помощью функции disp. Например:
>> X=[1 2 3 4];
>> disp(X(3))
М - функции могут записывать числовые вектора и матрицы на диск, и считывать их оттуда. Открывает файл функция fopen, которая имеет два параметра (где fid – файловый идентификатор, возвращаемый функцией fopen):
fid = fopen('имя-файла', 'флаг')
Первый параметр 'имя-файла' – может содержатьполный путь к нему (если файл не располагается в текущем каталоге MATLAB). Второй параметр - так называемый флаг открытия файла, определяющий способ дальнейшей работ с ним. Этот флаг может иметь три значения:
'rb' - только для чтения.
'wb' - только для записи (предыдущее содержимое теряется).
'r+' - чтение, так и запись файлов одновременно.
Вторая буква в этих примерах говорит о бинарном характере файлов.
Если операция открытия файла не удалась (из-за отсутствия файла или из-за неправильного указания пути), то функция fopen возвращает -1.