Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования Российской Федерации
Рязанский государственный радиотехнический университет
Кафедра ЭВМ
Лабораторная работа №3
«Функции в MATLAB»
Выполнил:
Студент гр. 015
Боев А.А.
Проверила:
Саблина В.А.
Рязань 2013 г.
Цель работы: Приобретение навыков создания и использования функций в MATLAB, применения векторизации циклов, измерения времени исполнения кода.
Описание функции от двух аргументов:
function z = gipot( x,y )
%gipot находит длину гипотенузы прямоугольника
%по известным катетом
if nargin ==1
z=NaN;
% error( 'Не число' )
else
z=sqrt(x.*x+y.*y);
end
end
Содержание скрипта сравнения времен выполнения:
tic;%запуск таймера
i=1;%Задаём начальной значение i=1
for x1 = -10:0.5:10%Диопозон изменения переменной x1
k=1;%Задаём начальной значение k=1
for y1 = -10:0.5:10%Диопозон изменения переменной y1
z1(i,k) = gipot(x1,y1);%запрос к функции "gipot"
k=k+1;%Next k
end
i=i+1;%Next i
end
Time1=toc;%остановка таймера и возврат в Time1 время
tic;%запуск таймера
[x2,y2]=meshgrid(-10:0.5:10 ,-10:0.5:10);%Задаём диапазон изменения параметров x и y
z2 = gipot(x2,y2);%запрос к функции "gipot"
Time2=toc;%остановка таймера и возврат в Time2 время
% вывод в консоль информации о затрате времени
disp ('Время использования цикла:');disp (Time1);
disp ('Время использования вектора:');disp (Time2);
% что и во сколько раз дольше
if Time1<Time2
disp('время использования векторов больше цикла в : ');
disp (Time2/Time1);
else
disp('время использования цикла больше векторов в : ');
disp(Time1/Time2);
end;
% сравнения результатов работы скрипта для двух способов
if z1==z2
disp('z1=z2')
else
disp ('z1<>z2')
end;
% сравнивать скорости вычисления некоторой
% заданной функции в цикле и с помощью векторизации
disp('управление функцией...');
Tgipot=@gipot;%использование как вх аргумента ф.gipot
T=comparetime(Tgipot);%отправляем в ф. "comparetime", ф."gipot"
disp(T);
Описание функции сравнения времен выполнения:
function [Time1, Time2] = comparetime( indic )
%comparetime функция затраты времени использования цикла и векторов
% выход-2 времени использования для первого и второго способов
tic;
i=1;
for x1 = -10:0.5:10
k=1;
for y1 = -10:0.5:10
z1(i,k) = indic(x1,y1);
k=k+1;
end
i=i+1;
end
Time1=toc;
tic;
[x2,y2]=meshgrid(-10:0.5:10 ,-10:0.5:10);
z2 = indic(x2,y2);
Time2=toc;
end
Результат выполнения скрипта (полученные массивы можно посмотреть запустив скрипт на ПК):
>> foi.m
Время при использование цикла:
0.0129
Время при использование вектора:
0.0020
время при использование цикла больше векторов в :
6.3885
z1=z2
running function...
0.0074