Решение задач оптимального управления с использованием математической системы MATLAB и пакета имитационного моделирования SIMULINK. Сивохин А.В - 27 стр.

UptoLike

for k=1:nargout
varargout{k} = a{k, : }
end
a1={1 2; 3 4; 5 6; 7 8; 9 10; 11 12}
[p1 p2]=array2vec(a1)
[q1 q2 q3 q4 q5]=arra2vec(a1)
whos
pause
Файл-функция с переменным числом входных аргументов
function where = point(varargin)
% Файл-функция определяет попадание точки с заданными
% координатами (px, py) в круги с центрами
% в (x1,y1), (x2, y2) и т. д. и радиусами R1, R2 и т. д.
% Возвращает
% 1 в случае попадания
% 0 в случае непопадания
% Использование where = point(px,py,[x1,y1,R1],[x2,y2,R2],...)
% Проверка числа входных аргументов (числа
ячеек varargin)
if length(varargin) < 3
error('Недостаточно входных аргументов')
end
% Выделение координат точки из первых двух ячеек
Xpoint = varargin{1};
Ypoint = varargin{2};
% Нахождение числа заданных кругов
% (число ячеек varargin без первых двух)
Ncircle = length(varargin) - 2;
% Извлечение координат центров и радиусов кругов
for i = 1:Ncircle
Xcircle(i) = varargin{i+2}(1);
Ycircle(i) = varargin{i+2}(2);
Rcircle(i) = varargin{i+2}(3);
end
% Полагаем where=0, т. е. пока нет ни одного нужного круга
where = 0;
% Перебор кругов в цикле
for i = 1:Ncircle
% Вычисление расстояния от точки
до центра текущего круга
dist = sqrt((Xpoint-Xcircle(i))^2+(Ypoint-Ycircle(i))^2);
% Сравнение расстояния с радиусом круга
for k=1:nargout
  varargout{k} = a{k, : }
end

a1={1 2; 3 4; 5 6; 7 8; 9 10; 11 12}
[p1 p2]=array2vec(a1)
[q1 q2 q3 q4 q5]=arra2vec(a1)
whos
pause

 Файл-функция с переменным числом входных аргументов


function where = point(varargin)
% Файл-функция определяет попадание точки с заданными
% координатами (px, py) в круги с центрами
% в (x1,y1), (x2, y2) и т. д. и радиусами R1, R2 и т. д.
% Возвращает
%      1 в случае попадания
%      0 в случае непопадания
% Использование where = point(px,py,[x1,y1,R1],[x2,y2,R2],...)

% Проверка числа входных аргументов (числа ячеек varargin)
if length(varargin) < 3
   error('Недостаточно входных аргументов')
end
% Выделение координат точки из первых двух ячеек
Xpoint = varargin{1};
Ypoint = varargin{2};
% Нахождение числа заданных кругов
% (число ячеек varargin без первых двух)
Ncircle = length(varargin) - 2;
% Извлечение координат центров и радиусов кругов
for i = 1:Ncircle
   Xcircle(i) = varargin{i+2}(1);
   Ycircle(i) = varargin{i+2}(2);
   Rcircle(i) = varargin{i+2}(3);
end
% Полагаем where=0, т. е. пока нет ни одного нужного круга
where = 0;
% Перебор кругов в цикле
for i = 1:Ncircle
   % Вычисление расстояния от точки до центра текущего круга
   dist = sqrt((Xpoint-Xcircle(i))^2+(Ypoint-Ycircle(i))^2);
   % Сравнение расстояния с радиусом круга