
- •Пример обращения к созданной м-функции
- •Практическая часть
- •Программный код решения примера
- •Программный код решения примера
- •Программный код решения примера для сложения трех векторов
- •Программный код решения примера
- •Программный код решения примера
- •Программный код решения примера
- •Программный код решения примера
Программный код решения примера для сложения трех векторов
function f = funvar3(varargin) % М-функция с переменным количеством входных аргументов % ключевое слово varargin
%% Определение количество входных аргументов n = length(varargin);
%% обращение к вектору с помощью класса ячейки {} f = varargin{1} + varargin{2} + varargin{3}; end
|
Пример выполнения программы при обращении к М-функции funvar3 из командной строки:
>> s = funvar4([1,2], [4,5], [6,7])
s =
11 14
При определении М-функции используется ключевое слово varargin, а при обращении к функции используются фактические параметры – векторы. Обращение к заданному по номеру вектору происходит через фигурные скобки, которые формируют массив ячеек – класс cell. Обычно код подобных М-функций содержит операторы цикла и условия, с которыми познакомимся в следующих лабораторных работах.
Пример 5. Написать М-функцию, которая возвращает переменное количество измеряемых значений массива, если на вход функции подается массив заранее неизвестного размера и размерности.
Для этого примера в общем случае требуется использование операторов цикла. Для демонстрации возможности переменного количества возвращаемых значений используем трехмерный массив размера 223.
Программный код решения примера
function varargout = outvar(M) % М-функция с переменным количеством % возвращаемых значений % ключевое слово varargout % Определение количества размерностей массива n = ndims(M);
varargout(1) = {size(M, 1)}; varargout(2) = {size(M, 2)}; varargout(3) = {size(M, 3)}; end
|
Пример выполнения программы:
>> A = rand(3,4); B = randn(3,4);
>> C(:,:,1) = A; C(:,:,2) = B;
>> C
C(:,:,1) =
0.4218 0.9595 0.8491 0.7577
0.9157 0.6557 0.9340 0.7431
0.7922 0.0357 0.6787 0.3922
C(:,:,2) =
1.0668 -0.8323 0.7143 0.8580
0.0593 0.2944 1.6236 1.2540
-0.0956 -1.3362 -0.6918 -1.5937
>> [n1, n2, n3] = outvar(C)
n1 =
3
n2 =
4
n3 =
2
Задание 2
Напишите М-функцию с подфункцией вычисления логарифма числа по основаниям 3 и 5. Входным аргументом главной (основной) М-функции примите одномерный массив чисел.
Пример 6. Написать М-функцию для перестановки строк прямоугольной матрицы вещественных чисел.
Программный код решения примера
function M = swapR(M, n, m) % Аргументы функции (формальные параметры): % M - матрица вещественных чисел произвольного размера % n - номер строки % m - номер строки % В матрице М переставляются строки с номерами n и m % Возвращаемое значение (формальный параметр): % M - матрица, в которой переставлены строки с номерами n и m
temp = M(n, :); M(n, :) = M(m, :); M(m, :) = temp;
end %% end of function
|
Возможный результат выполнения программы в командном окне MATLAB:
>> % Матрица нормально распределенных случайных чисел
>> q = randn(7, 6)
q =
1.0347 -1.0689 -1.7115 -0.1649 -1.1135 -1.0891
0.7269 -0.8095 -0.1022 0.6277 -0.0068 0.0326
-0.3034 -2.9443 -0.2414 1.0933 1.5326 0.5525
0.2939 1.4384 0.3192 1.1093 -0.7697 1.1006
-0.7873 0.3252 0.3129 -0.8637 0.3714 1.5442
0.8884 -0.7549 -0.8649 0.0774 -0.2256 0.0859
-1.1471 1.3703 -0.0301 -1.2141 1.1174 -1.4916
>> % Переставим 2 и 5 строки
>> m = swapR(q, 2, 5)
m =
1.0347 -1.0689 -1.7115 -0.1649 -1.1135 -1.0891
-0.7873 0.3252 0.3129 -0.8637 0.3714 1.5442
-0.3034 -2.9443 -0.2414 1.0933 1.5326 0.5525
0.2939 1.4384 0.3192 1.1093 -0.7697 1.1006
0.7269 -0.8095 -0.1022 0.6277 -0.0068 0.0326
0.8884 -0.7549 -0.8649 0.0774 -0.2256 0.0859
-1.1471 1.3703 -0.0301 -1.2141 1.1174 -1.4916
Задание 3
Напишите М-функцию для перестановки столбцов прямоугольной матрицы вещественных чисел. Протестируйте ее.
Напишите М-функцию для перестановки строк прямоугольной матрицы, состоящей из строчных букв латинского алфавита. Протестируйте ее.
Пример 7. Написать М-функцию с именем tlimit для вычисления пределов от строковых выражений.