Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_3.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.1 Mб
Скачать

Программный код решения примера для сложения трех векторов

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. Написать М-функцию, которая возвращает переменное количество измеряемых значений массива, если на вход функции подается массив заранее неизвестного размера и размерности.

Для этого примера в общем случае требуется использование операторов цикла. Для демонстрации возможности переменного количества возвращаемых значений используем трехмерный массив размера 223.

Программный код решения примера

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

  1. Напишите М-функцию с подфункцией вычисления логарифма числа по основаниям 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

  1. Напишите М-функцию для перестановки столбцов прямоугольной матрицы вещественных чисел. Протестируйте ее.

  2. Напишите М-функцию для перестановки строк прямоугольной матрицы, состоящей из строчных букв латинского алфавита. Протестируйте ее.

Пример 7. Написать М-функцию с именем tlimit для вычисления пределов от строковых выражений.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]