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

Архитектураlab1

.pdf
Скачиваний:
9
Добавлен:
10.04.2015
Размер:
1.11 Mб
Скачать

а)

» x=[0.5 0.7 1]; Y=sin(x)

 

Y =

 

 

б)

501/1045

947/1470

1327/1577

 

 

 

» x=[0.5 0.7 1;1 3 12; 0.8 0.1 3];Y=sin(x)

 

Y =

 

 

0.4794

0.6442

0.8415

 

 

0.8415

0.1411 -0.5366

0.7174

0.0998

0.1411

 

в)

 

 

 

»x=[0.5 0.7 1] Y=sin(x)

???x=[0.5 0.7 1] Y

|

Missing operator, comma, or semicolon.

Рис. 6. Правильная запись вычисления функции на одномерном векторном (А) и многомерном (Б) матричном массивах аргумента и не правильная (В) (пропуск точки с запятой перед Y)

Если не указана переменная для значения результата вычислений, то MATLAB назначает такую переменную с именем ans.

Результат вычислений выводится в строках вывода (без знака »).

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

Ввекторе (одномерном массиве) значения заключены в квадратные скобки

иотделяются друг от друга пробелом или запятой (рис.1.6А); в матрице (многомерном массиве) значения заключены тоже в квадратные скобки, причем, строки отделяются точкой с запятой (порядок следования строк: левая выше правой), а значения в каждой строке отделяются аналогично вектору (рис.1.6Б). Если значения аргумента вычисляемой функции являются членами отрезка арифметической прогрессии с заданной разностью (шагом), то для записи аргумента применяется оператор «двоеточие :» - см. рис. 1.7. При разности, равной единице, ее запись в операторе можно опускать (см.рис.1.7Б).

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

одновременно.

Комментарии записываютсявотдельнуюстроку, помечаемуюзнакомпроценты(%) впервомзнакоместестроки(см. рис.1.8 А).

Разбиение строки с длинным выражением или комментарием на две производится установкойкурсорапередпереносимойнасоздаваемуювторуюстрокучастьювыраженияи нажатиемклавишShift + Enter;

Соединениедвухстрокводнувпрограммеиливвыражениипроизводится установкойкурсоравначаловторойстрокиинажатиемклавишShift + Return .

А)

» x=1:2.5:16.5;Y=sin(x)

Y=

0.8415 -0.3508 -0.2794 0.7985 -1.0000 0.8038 -0.2879

Б)

» x=1:10;Y=sin(x) Y=

Columns 1 through 7

0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 Columns 8 through 10

0.9894 0.4121 -0.5440

В)

» x=[1:2.5:11.5;2:6];Y=sin(x)

Y=

 

 

 

 

1327/1577

-851/2426 -1109/3969 1161/1454 -102108/102109

401/441

441/3125

-445/588

-677/706

-1109/3969

Рис. 7. Правильнаязаписьвычисленияфункциинаодномерноммассиве аргументаввидеотрезкаарифметическойпрогрессии( сразностями2,5 (рис. 7А) и1 (рис. 7Б)) иввиде2-строчнойматрицыстемижеразностями(рис.

7В)

» x=[0.5 0.7 1];Y=sin(x)

% Коментарии размещаются в отдельных строках

Y =

0.4794 0.6442 0.8415

Рис. 8. Ввод комментария в вычисляемое выражение или программу (А)

Вычисляемое выражение сразу послезавершениявычисления можно ввести вновь в текущее место вставки нажатием кнопки «стрелка вверх» ↑ (для изменения величин аргу-

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

Ранее примененную функцию можно вставить в командное окно через копирование её из окна Протокола команд (Command History), в котором все, ранее использованные командыифункциисохраняютсядотехпор, покарасчетчикнеудалитих.

При выполнении вычислений со множеством функций целесообразно перечни всех функций MATLAB и функций оптимизации поместить в оконце Избранное Хелп-окна MATLAB дляоперативногокопированиявКомандноеокноиуточненияихсвойств, найдя соответствующие разделы Справки в оконце Содержание путем цепочкиследующих выделений(сзаключительнымвкаждойцепочкенажатиемкнопкиДобавитьвИзбранное).

-Для перечня Категорий функций: Contents-Matlab-Reference-гиперссылка Function by Category.

-Для алфавитного перечня функций Матлаба: Contents-Matlab-Reference-

гиперссылкаAlphabetcal List of Function.

-Для перечня Категорий функций оптимизации: Contents-Optimization Toolbox- Reference-гиперссылкаFunction by Category.

-Для алфавитного перечня функций оптимизации: Contents-Optimization Toolbox- Reference-гиперссылкаFunction Reference (Alphabetcal).

Чтобы сохранить данные вычислений в окне управления (выражения, программы, результатыилиихчасти) дляповторноговызоваиработы, необходимо:

-выделитьданные,

-скопироватьихвбуфер,

-вызватьредактор-отладчикМ-файловчерезменю«Файл-Создать-М-файл»,

-вставить скопированные данные в открывшийся новый М-файл и сохранить его черезменюредактора «Файл-Сохранитькак».

Дляпродолжениявычислительнойработывокнеуправлениясданными, сохраненными по правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделитьвнемтребуемыедляработыфрагменты, скопироватьихвбуферивставить

втекущееместовводаокнауправления.

Перенос части вычисляемого выражения на вторую строку в Командном

окне или в М-файле, чтобы сделать видимым выражение целиком: перед переносимой частью следует поставить 3 точки и нажать кнопки Shit + Enter. Этим способом можно дробить выражение многократно.

Графика в системе MATLAB

1.Построение двумерных графиков функций

Врезультате вычислений в системе MATLAB обычно получается большой массив данных, который трудно анализировать без наглядной визуализации. Поэтому система визуализации, встроенная в MATLAB, придаёт этому пакету особую практическую ценность.Графические возможности системы MATLAB являются мощными и разнообразными. В первую очередь целесообразно изучить наиболее простые в использовании возможности. Их часто называют высокоуровневой графикой. Это название отражает тот приятный факт, что пользователю нет никакой необходимости вникать во все тонкие и глубоко спрятанные детали работы с графикой. Например, нет ничего проще, чем построить график функции одной вещественной переменной. Следующие команды

x = 0 : 0.01 : 2;

y = sin( x );

вычисляют массив y значений функции sin для заданного набора аргумен-

тов.

После этого одной единственной командой

plot( x , y )

удаётся построить вполне качественно выглядящий график функции:

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

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

Если мы, не убирая с экрана дисплея первое графическое окно, вводим и исполняем ещё один набор команд

x = 0 : 0.01 : 2;

z = cos( x );

plot( x , z )

то получаем новый график функции в том же самом графическом окне (при этом старые оси координат и график в нём пропадают):

Если нужно второй график провести "поверх первого графика", то перед исполнением второй графической команды plot, нужно выполнить команду

hold on

которая предназначена для удержания текущего графического окна. В результате будет получено следующее изображение:

Того же самого можно добиться, потребовав от функции plot построить сразу несколько графиков в рамках одних и тех же осей координат:

x = 0 : 0.01 : 2;

y = sin( x ); z = cos( x );

plot( x , y , x , z )

У такого способа есть ещё одно (кроме экономии на команде hold on) преимущество, так как разные графики автоматически строятся разным цветом.

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

Если всё же нужно одновременно визуализировать несколько графиков так, чтобы они не мешали друг другу, то это можно сделать двумя способами. Вопервых, можно построить их в разных графических окнах. Например, построив графики функций sin и cos в пределах одного графического окна (показано выше), вычисляем значения для функции exp:

w = exp( x );

После этого выполняем команды

figure; plot( x , w )

которые построят график функции exp в новом графическом окне, так как команда figure создаёт новое (добавочное) графическое окно, и все последующие за ней команды построения графиков выводят их в новое окно:

В результате в первом графическом окне (Figure No. 1) по вертикальной оси переменные изменяются в диапазоне от -0.5 до 1, а во втором графическом окне (Figure No. 2) - от 1 до 8.

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

Например, для ранее выполненных вычислений с функциями sin, cos и exp, строим графики первых двух функций в первой подобласти, а график третьей функции - во второй подобласти одного и того же графического окна:

subplot(1,2,1); plot(x,y,x,z)

subplot(1,2,2); plot(x,w)

в результате чего получаем графическое окно следующего вида:

Диапазоны изменения переменных на осях координат этих подобластей независимы друг от друга.

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

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

help имя_функции

набираемой с клавиатуры и выполняемой в командном окне системы

MATLAB.

Итак, уже рассмотренные примеры показывают, как подсистема высокоуровневой графики MATLAB легко справляется с различными случаями построе-

ния графиков, не требуя слишком большой работы от пользователя. Ещё одним таким примером является построение графиков в полярных координатах. Напри-

мер, если нужно построить график функции r = sin( 3φ) в полярных координатах, то следующие несколько команд

phi = 0 : 0.01 : 2*pi; r = sin( 3* phi );

polar( phi , r )

решают эту задачу:

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