Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет по лабораторонй работе №5

.docx
Скачиваний:
48
Добавлен:
03.10.2022
Размер:
23.67 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

_____________________________________________________________________________

Кафедра радиосистем и обработки сигналов

Дисциплина «Прикладные пакеты моделирования»

Лабораторная работа № 5

Режим программирования: script-файлы и function-файлы

Цель работы

Изучить программные средства MATLAB и овладеть навыками разработки файловсценариев (script-файлов) и внешних функций (function-файлов).

ВЫПОЛНЕНИЕ РАБОТЫ

  1. Создание script-файла.

script

clc

clear

x= 1:1000;

Y_uniform=rand(1,1000);

Y_normal=randn(1,1000);

figure('Name','White Uniform Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_uniform),grid,title('White Uniform Noise')

subplot(2,1,2),hist(Y_uniform),grid

figure('Name','White Normal Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_normal),grid,title('White Normal Noise')

subplot(2,1,2),hist(Y_normal),grid

Пояснения:

  • Script-файлом называют создаваемый пользователем M-файл, представляющий собой основную (управляющую) программу.

  • В окне Editor.

  • Команды clc и clear.

  • Имя script-файла выбирается по тем же правилам, что и имя переменной.

  • Все программы пользователя, создаваемые в MATLAB, сохраняются на диске и имеют расширение m, поэтому их называют M-файлами.

  • Для сохранения M-файла выбрать в главном меню команду File | Save as (Сохранить как). 4. В раскрывшемся окне Save as выбрать требуемую папку, присвоить имя новому M-файлу (без расширения) и нажать кнопку Save (Сохранить).

  • Обращение к script-файлу в режиме прямых вычислений осуществляется по его имени.

  • Все переменные script-файла являются глобальными, т. е. они сохранятся в Workspace и доступны для использования в любых приложениях.

  1. Добавление паузы и сообщения о выводе результатов.

script

clc

clear

x= 1:1000;

Y_uniform=rand(1,1000);

Y_normal=randn(1,1000);

disp(' Для вывода графика и гистограммы РАВНОМЕРНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Uniform Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_uniform),grid,title('White Uniform Noise')

subplot(2,1,2),hist(Y_uniform),grid

disp(' Для вывода графика и гистограммы НОРМАЛЬНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Normal Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_normal),grid,title('White Normal Noise')

subplot(2,1,2),hist(Y_normal),grid

Пояснения:

  • Вывод значений переменной или текста выполняется с помощью соответствующей функции: disp() или disp('').

  • Приостановить процесс выполнения программы на неопределенное (до нажатия любой клавиши) время можно по команде: pause

  1. Ввод данных с клавиатуры.

script

clc

clear

x= input('Введите X: ');

Y_uniform=input('Введите Y_uniform: ');

Y_normal=input('Введите Y_normal: ');

disp(' Для вывода графика и гистограммы РАВНОМЕРНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Uniform Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_uniform),grid,title('White Uniform Noise')

subplot(2,1,2),hist(Y_uniform),grid

disp(' Для вывода графика и гистограммы НОРМАЛЬНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Normal Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_normal),grid,title('White Normal Noise')

subplot(2,1,2),hist(Y_normal),grid

Пояснения:

  • Ввод данных с клавиатуры организуется с помощью функции: = input('').

4. Создание function-файла.

function [] = F1(Y_uniform,Y_normal)

clc

clear

Y_uniform=[1:5000];

Y_normal=[1:5000];

MEAN1=sum(Y_uniform)/5000;

MEAN2=sum(Y_normal)/5000;

VAR1=var(Y_uniform);

VAR2=var(Y_normal);

Uniform= strcat([' Mean value = ',num2str(MEAN1)])

uniform= strcat([' Variance value = ',num2str(VAR1)])

Normal= strcat([' Mean value = ',num2str(MEAN2)])

normal= strcat([' Variance value = ',num2str(VAR2)])

Пояснения:

  • Function-файлом называют создаваемый пользователем M-файл, представляющий собой внешнюю функцию (в отличие от встроенных функций MATLAB).

  • Формат описания при нескольких выходных параметрах имеет вид: function [Y1,Y2,...] = (X1,X2,...).

  • Разделение параметров function-файлов на формальные и фактические обусловлено тем, что формальные параметры являются локальными, т. е. они (вместе с внутренними переменными function-файла) загружаются в Workspace на время вычисления внешней функции и удаляются из Workspace по завершении вычислений. Фактические же параметры сохраняются в Workspace.

  • В окне Editor.

  • Для сохранения M-файла выбрать в главном меню команду File | Save as (Сохранить как). 4. В раскрывшемся окне Save as выбрать требуемую папку, присвоить имя новому M-файлу (без расширения) и нажать кнопку Save (Сохранить).

  • Все программы пользователя, создаваемые в MATLAB, сохраняются на диске и имеют расширение m, поэтому их называют M-файлами.

  • Обращение к внешней функции подобно обращению к встроенной функции MATLAB и при нескольких выходных параметрах имеет вид: [Y1факт,Y2факт,...] = (X1факт,X2факт,...).

  • Они сохранятся в Workspace и доступны для использования в любых приложениях.

5. Использование function-файла в script-файле.

script

clc

clear

x= input('Введите X: ');

Y_uniform=input('Введите Y_uniform: ');

Y_normal=input('Введите Y_normal: ');

disp(' Для вывода графика и гистограммы РАВНОМЕРНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Uniform Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_uniform),grid,title('White Uniform Noise')

subplot(2,1,2),hist(Y_uniform),grid

disp(' Для вывода графика и гистограммы НОРМАЛЬНОГО БЕЛОГО ШУМА нажмите <ENTER>')

pause

figure('Name','White Normal Noise','NumberTitle','off')

subplot(2,1,1),plot(x,Y_normal),grid,title('White Normal Noise')

subplot(2,1,2),hist(Y_normal),grid

mean_var

Пояснения:

  • Через имя Function-файла.

  • В раскрывшемся окне Save as выбрать требуемую папку, присвоить имя новому M-файлу (без расширения) и нажать кнопку Save (Сохранить). При открытом окне редактора после внесения изменений в M-файл необходимо его сохранить перед следующим запуском. Признаком несохраненного файла является символ " * " (звездочка) при его имени в окне редактора. Создание новой папки выполняется с помощью контекстного меню в окне Current Folder. Сохранение пути к требуемой папке выполняется по команде контекстного меню Add to Path | Selected Folders (Добавить путь | Выбранные папки). Сохранение пути к папке позволять в текущей сессии запускать М-файл, не открывая данную папку. При запуске M-файлов из текущей папки, путь к ней можно не сохранять.

  • Все переменные script-файла являются глобальными, т. е. они сохранятся в Workspace и доступны для использования в любых приложениях.

Задание на самостоятельную работу

2С. Создание script-файла. Создать script-файл для генерации "магической" матрицы с помощью функции: M = magic(n) где n и M — порядок и имя матрицы. Организовать ввод с клавиатуры порядка матрицы. Вычислить определитель матрицы. Вычислить суммы элементов столбцов, строк и главной диагонали матрицы. Растянуть матрицу в вектор-столбец, выполнить сортировку его элементов по возрастанию и вычислить сумму элементов, деленную на порядок матрицы. Перед вводом порядка матрицы и выводом результатов добавить стоки соответствующих сообщений.

script

clear

clc

disp('введите n')

n = input('n= ');

M= magic(n)

disp('Что бы вычислить порядок матрицы нажмите <Enter>')

pause

determinant=det(M)

disp('Что бы вычислить cумму элементов столбцов матрицы нажмите <Enter>')

pause

Sum_st=sum(M)

diag=diag(M);

disp('Что бы вычислить cумму элементов диагонали матрицы нажмите <Enter>')

pause

Sum_diag=sum(diag)

inver=M';

disp('Что бы вычислить cумму элементов строк матрицы нажмите <Enter>')

pause

Sum_str=sum(inver)

disp('Что бы растянуть матрицу в вектор столбец нажмите <Enter>')

pause

Vec=M(:)

disp('Что бы отсортировать вектор столбец по возростанию нажмите <Enter>')

pause

sort=sort(Vec)

disp('Что бы вычислить cумму элементов вектора столбца деленную на определитель матрицы нажмите <Enter>')

pause

sum_el=sum(Vec)/determinant

Вывод:

  1. Изучить программные средства MATLAB

  2. Овладел навыками разработки файловсценариев (script-файлов) и внешних функций (function-файлов).