Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа№6.doc
Скачиваний:
9
Добавлен:
28.08.2019
Размер:
2.1 Mб
Скачать

Name(список_параметров)

в математических выражениях;

– все переменные, имеющиеся в теле файла-функции, являются локальными, то есть действуют только в пределах тела функции;

– файл-функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры;

– правила вывода комментариев те же, что у файлов-сценариев;

– файл-функция служит средством расширения системы MATHLAB;

– при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы MATHLAB.

Последняя конструкция vаг = выражение вводится, если требуется, чтобы функция выдавала результат вычислений.

Пример 5. Файл-функция

function r =randint(m,n)

%RANDINT случайная матрица с целыми элементами.

%randint(m,n) возвращает матрицу mxn с целыми

%элемента м и между 0 и 9.

a =floor(10*rand(m,n));

Пример 6. Более общий вид файл-функции

function r =randint(m,n,a,b)

%RANDINT случайная матрица с целыми элементами.

%randint(m,n)возвращает матрицу mxn с целыми

%элементами между 0 и 9.

%rand(m,n,a,b) возвращает матрицу с целыми

%элементами в диапазоне между целыми a и b.

if nargin <3,a =0;b =9;end

r =floor((b-a+1)*rand(m,n))+a;

Этот текст должен быть записан на диск в виде файла с именем randint.m (в соответствие с именем функции – это обязательное условие для функции).

Первая строка функции - объявление имени функции, входные аргументы, выходные аргументы. Без такой строки весь следующий файл является программой, или сценарием, а не функцией. Так, например, оператор

z =randint(4,5)

приведет к передаче чисел 4 и 5 переменным m и n ,а выходной результат будет

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

Приведенная форма файла-функции характерна для функции с одним выходным параметром. Если выходных параметров больше, то они указываются в квадратных скобках после слова function. При этом структура модуля имеет следующий вид:

function [vаг1,vаг2,...] = f_namе(список_параметров)

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

Var1-выражение

Такая функция во многом напоминает процедуру. Ее нельзя слепо использовать непосредственно в математических выражениях, поскольку она выдает не единственный результат, а множество результатов – по числу выходных параметров. Если функция, имеющая несколько выходных параметров, входит в состав математического выражения, для вычислений в выражении будет использован первый из выходных параметров. Это зачастую ведет к ошибкам в вычислениях. Поэтому, как отмечалось, данная функция используется как отдельный элемент программ в виде

[varl,var2, …] = namе(Список_параметров)

После такого вызова выходные переменные varl, var2, … становятся определенными и их можно использовать в последующих математических выражениях и иных сегментах программы. Если функция используется в виде

f_namе(список_параметров),

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

Пример 7. Файл-функция с двумя параметрами

function a=gcd(a,b)

%GCD Наибольший общий делитель.

%gcd(a,b) является наибольшим общим делителем

%целых чисел a и b,оба не равны нулю.

a =round(abs(a));b =round(abs(b));

if a ==0 &b ==0

error(’gcd не определено, если оба числа равны нулю ’)

else

while b ~=0

r =rem(a,b);

a=b;b=r;

end

end

Инструментальная панель командного окна системы MATHLAB позволяет обеспечить простой доступ к операциям над m-файлами. Эти операции включают:

– создание нового m-файла (New File);

– открытие существующего m-файла (Open File);

– удаление фрагмента (Cut);

– копирование фрагмента (Copy);

– вставка фрагмента (Paste);

– отмена только выполненной операции (Undo);

– просмотр рабочей области (Workspace Browser);

– просмотр путей доступа (Path Browser);

– текущая помощь (Help).

Рабочая область. Рабочая область системы MATHLAB Workspace – это область памяти, в которой размещены переменные системы. Содержимое этой области можно просмотреть из командной строки с помощью команд who и whos. Различие между этими командами состоит в следующем:

who – выводит только имена переменных;

whos – выводит информацию о размерах массивов и типе переменной.

Сохранение переменных рабочей области. Команда Save Workspace As меню File либо команда save fname, набранная в командном окне позволяет сохранить содержимое рабочей области в двоичном m-файле, который можно в дальнейшем вызвать командой Open из меню главного окна, либо командой load из командного окна.

Загрузка рабочей области. Команда Open меню File или команда load, набранная в командном окне позволяет загрузить m-файл, который был ранее сохранен с помощью команды save. При загрузке m-файла новые значения одноименных переменных будут записаны взамен старых. Если m-файл имеет расширение, отличающееся от .mat, то необходимо использовать флаг –mat; в противном случае MATHLAB будет считать форматом файла ASCII-формат.

Загрузка файлов данных в ASCII-формате. Команда load позволяет выполнять импорт файлов данных в ASCII-формате; она преобразует содержимое файла в переменную с именем файла только без расширения.

Например, применение команды load tides.dat создает в рабочей области системы MATHLAB переменную с именем tides. Если исходный файл в ASCII-формате имеет m строк с n значениями в каждой строке, то результатом будет массив чисел размера m×n.

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

Например, следующая конструкция позволяет сохранить квадраты чисел от 1 до 10 в файлах с именами data1, …, data10:

file = 'data';

for i = 1:10

j = i.^2;

save([file int2(i)],'j');

end

Использование группового символа. Команды load и save допускают использование группового символа (*) в качестве замены ряда символов в шаблоне имени переменной.

Например, команда save rundate x* сохраняет все переменные, имена которых начинаются с символа x в файле с именем rundata.mat.

Точно также команда load testdata ex1*95 загружает все переменные, имена которых начинаются с символов 'ex1' и заканчиваются символами '95', независимо от того, какие символы размещены между ними.

Пример 8. Использование рабочего пространства MATLAB.

Комментарии к вычислениям:

Команда вывода имен всех переменных рабочего пространства.

Команда удаления переменной из рабочего пространства.

Команда сохранения рабочего пространства в дисковом файле под заданным именем.

Команда очистки рабочего пространства.

Команда загрузки рабочего пространства из ранее сохраненного файла.

Команда очистки командного окна (рабочее пространство не изменяется).

В результате сохранения рабочего пространства на диске создается файл с заданным именем (может быть произвольным) и расширением mat. Сохранение рабочего пространства можно выполнить через меню командного окна File пункт Save workspace as

В командном окне есть возможность вернуть в командную строку ранее введенные команды, они запоминаются в специальной области памяти, называемой стеком команд. Для этого используются клавиши «стрелка вверх» и «стрелка вниз». Клавиша «стрелка вверх» позволяет вывести предыдущие команды в порядке обратном их вводу. Клавиша «стрелка вниз» осуществляет прокрутку команд в противоположном направлении.

Создание графиков. Функция plot имеет различные формы, связанные с входными параметрами, например plot(у) создает кусочно-линейный график зависимости элементов у от их индексов. Если вы задаете два вектора в качестве аргументов, plot(x,y) создаст график зависимости у от х.

Например, для построения графика значений функции sin от нуля до 2 сделаем следующее

t = 0:pi/100:2*pi; у = sin(t); plot(t,y).

Вызов функции plot с многочисленными парами х-у создаст многочисленные графики. MATLAB автоматически присваивает каждому графику свой цвет (исключая случаи, когда это делает пользователь), что позволяет различать заданные наборы данных. Например, следующие три строки отображают график близких функций, и каждой кривой соответствует свой цвет:

у2 = sin(t-.25) ;

уЗ = sin(t-.5) ;

plot( t, y, t, y2, t, уЗ).

Функция hist – построение графика гистограммы заданного вектора. Стандартное обращение имеет вид: hist(y,x), где y – вектор, гистограмму которого нужно построить; x – вектор, определяющий интервалы изменения первого вектора, внутри которых подсчитывается число элементов вектора y.

Действия с графическими окнами. Команды работы с графическим окном находятся в главном меню окна и во всплывающем меню (щелчок правой кнопкой мыши в координатной плоскости).

Нанесение координатной сетки. Для нанесения (удаления) сетки используется пункт всплывающего меню Grid (рис.6).

Рис. 6. Всплывающее меню координатной плоскости

Вывод информации об отдельных точках графика. Для вывода координат некоторой точки графика выполняется наведение курсора мыши на данную точку и нажатие левой кнопки (не отпуская). Например, для временного графика будет выведена информация о текущем значении сигнала и о текущем времени (рис. 7).

Рис. 7. Информация о координатах точки графика

Информационная надпись не исчезает при отпускании кнопки мыши. Для ее удаления необходимо щелкнуть левой кнопкой мыши на свободном поле либо правой кнопкой мыши вызвать всплывающее меню, показанное на рис. 8

Рис. 8. Всплывающее меню при работе с графиком

и воспользоваться пунктом Delete. Аналогично выводится информационная надпись о текущем значении и текущей частоте для частотных характеристик.

Масштабирование и удаление графиков. Существует несколько способов изменения масштаба графика (как временной, так и частотной характеристики).

Первый способ – использование подменю Zoom всплывающего меню (рис. 6). Пунктами подменю Zoom являются:

In-X – масштабирование по горизонтали;

In-Y – масштабирование по вертикали;

X-Y – масштабирование по вертикали и по горизонтали (выделение прямоугольного фрагмента);

Out – возврат исходного масштаба.

Масштабирование выполняется мышью, при удержании нажатой левой кнопки, путем проведения горизонтальной линии (In-X), вертикальной линии (In-Y) или прямоугольника (X-Y).

Второй способ изменения масштаба – использование окна параметров координатной плоскости. Для вывода окна параметров необходимо сначала войти в режим редактирования графического окна, нажав мышью кнопку с изображением стрелки в меню окна (рис. 9),

Рис. 9. Меню графического окна

а затем выполнить двойной щелчок по координатной плоскости (но не по самому графику!). В результате появится окно параметров (рис. 10).

Максимальное и минимальное значения по оси X и оси Y (для разных характеристик эти оси имеют разный смысл) задаются в строках ввода напротив надписи Limits. При этом должен быть установлен флажок ручного ввода пределов Manual.

Иногда требуется скрыть некоторые графики (если на одной координатной плоскости их несколько). Для того чтобы скрыть графики (с возможностью последующего восстановления) используется всплывающее меню графического окна (режим редактирования выключен). В подменю Systems перечислены имена всех объектов, характеристики которых были выведены в окно. Для того чтобы скрыть график, необходимо снять флажок напротив имени объекта.

Рис. 10. Окно параметров графического окна

Изменение параметров графиков. Для изменения параметров графика можно использовать всплывающее меню графика (рис. 11). Для его вывода необходимо в режиме редактирования графического окна выполнить щелчок правой кнопкой мыши при наведении курсора на сам график.

Рис. 11. Всплывающее меню графика

Для изменения толщины линии используется подменю Line Width, для изменения стиля линии (сплошная, пунктирная и т.д.) – подменю Line Style. При выборе пункта Color появляется окно установки цвета линии. Те же действия можно выполнить, используя окно установки параметров графика (пункт Properties).

Оформление графического окна. Для добавления текстовых комментариев нажмите мышью кнопку меню графического окна с изображением буквы A. Затем выполните щелчок мыши в нужном месте координатной плоскости, введите текст и выполните щелчок мыши в любом другом месте координатной плоскости. В режиме редактирования графического окна можно перетаскивать текстовую надпись с помощью мыши на любое место координатной плоскости.

Для введения заголовка над координатной плоскостью заполните строку Title в окне параметров Insert. Для введения поясняющих надписей для осей – строки Label для оси X и для оси Y.

Сохранение графического окна. Для сохранения координатной плоскости и ее содержимого в графическом файле используется пункт Export в подменю File главного меню графического окна. В окне сохранения файла задается тип файла (например, Bitmap files *.bmp) и имя файла. Файлы типа Bitmap могут быть открыты графическим редактором Paint.

Установите сетку на координатную плоскость и сохраните любую из характеристик в файле типа Bitmap. Откройте этот файл в редакторе Paint.