Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Формирование векторов и подматрицОператор «:» является очень полезным оператором языка MATLAB. Он применяется для формирования векторов и матриц или для выделения из них подвекторов, подматриц, подблоков массива. Например, зададим вектор А, состоящий из цифр от 1 до 10 следующим образом: А=1:10 А = 1 2 3 4 5 6 7 8 9 10 Зададим вектор А, состоящий из цифр от 1 до 10 с шагом 2 следующим образом: A=1:2:10 А = 1 3 5 7 9 Зададим матрицу A следующим образом: А = и выделим из него подблок, включающий в себя строки со второй по четвертую столбцов с третьего по пятый следующим образом: А(2:4,3:5)
Оператор А(5,:) позволяет выделить все столбцы пятой строки массива A; А(5,:) ans = 3 5 6 7 8 Оператор А(:, 5) позволяет выделить все строки пятого столбца массива A; А(:,5) ans = 5 7 0 9 8 6 7 Операторы умножения «.*» и правого деления «./» с точкой используются при перемножении или делении массивов (каждое число первого массива умножается/делится на соответствующее число второго массива). Например:
Операторы умножения и правого деления без точки применяются при перемножении или делении матриц по правилам линейной алгебры. Например: А*В ans = 26 28 31 59 73 85 61 57 59 При применении оператора левого деления с точкой «.\» и оператора без точки «\» выполняется решение систем линейных уравнений вида АХ=В по методу наименьших квадратов для матриц и векторов. Например: А\В ans = 6.3333 -14.3333 -23.3333 -9.6667 25.6667 41.6667 4.6667 -10.6667 -17.6667 A.\В ans = 2.5000 2.3333 1.4000 1.5000 0.7500 0.2500 При транспонировании массива (операция «.'») строки просто заменяются столбцами: А.' ans = 1 4 1 2 5 4 3 6 8 При транспонировании матрицы (операция «'» без точки) результатом является транспонированная матрица, для комплексных чисел выполняется операция комплексного сопряжения. Над матрицами можно производить разнообразные операции. Например, с помощью команды diag возможно формировать или извлекать диагонали матрицы. Функция X=diag(v) формирует квадратную матрицу X с вектором v на главной диагонали; Функция X=diag(v,k) формирует квадратную матрицу X порядка length(v)+abs(k) с вектором v на к- й диагонали. Функция v=diag(X,k) извлекает из матрицы X диагональ с номером к; при к> 0 - это номер к-й верхней диагонали, при к< 0 - это номер к-й нижней диагонали. Функция B=reshape(A,m,n) возвращает матрицу размером [m x n], сформированную из элементов матрицы А путем их последовательной выборки по столбцам. Элементарные графические функции системы MATLAB позволяют построить на экране и вывести на печать следующие типы графиков: линейный, логарифмический, полулогарифмический, полярный. Для каждого графика можно задать заголовок, нанести обозначение осей и масштабную сетку. Рассмотрим некоторые операторы для построения графиков в системе MATLAB. Команда plot(y) строит график элементов одномерного массива у в зависимости от номера элемента; команда plot(x,y) соответствует построению обычной функции, когда одномерный массив х соответствует значениям аргумента, а одномерный массив у - значениям функции. Команда plot(x,y,s) позволяет выделить график функции, указав способ отображения линии, способ отображения точек, цвет линий и точек с помощью строковой переменной s, которая может включать до трех символов из следующей таблицы:
Команда plot(xl,yl,sl,x2,y2,s2,.) позволяет объединить на одном графике несколько функций yl(xl), у2(х2), определив для каждой из них свой способ отображения. В системе MATLAB предусмотрено несколько команд и функций для построения трехмерных графиков. Значения элементов числового массива рассматриваются как z-координаты точек над плоскостью, определяемой координатами х и у. Возможно несколько способов соединения этих точек. Первый из них - это соединение точек в сечении (функция plot3). Например, команда plot3(xl,yl,zl,sl,x2,y2,z2,s2,...) позволяет объединить на одном графике несколько функций zl(xl,yl),z2(x2,y2),...., определив для каждой из них свой способ изображения. Команда mesh(X,Y,Z) выводит на экран сетчатую поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Цвета узлов поверхности задаются командой colormap(C), где С - палитра. Цвета: hsv - выделение оттенками hot— черно-красно-желто-белые цвета gray - линейная шкала оттенков серого цвета bone - шкала серых цветов с оттенками белого copper — линейный медный цвет pink — пастельные оттенки розового цвета white - белый цвет flag - попеременно красный, белый, синий и черный цвета lines - линейное чередование цветов colorcube - чередование серого, касного, зеленого и белого vga - 16 цветов jet — вариант hsv prism - использование 6 цветов cool - оттенки синего и фиолетового autumn - оттенки красного и желтого spring - оттенки фиолетового и желтого winter - оттенки синего и зеленого summer - оттенки зеленого и желтого Команда surf(X, Y,Z) выводит на экран сетчатую поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Для вращения трехмерного изображения используется команда rotate3d. Для того чтобы построить несколько графиков и разместить каждый график в своем окне figure, нужно после построения первого графика выполнить команды: file - New - Figure, тогда будет создано новое окно, в котором будет изображен новый график после введения в рабочем окне соответствующих команд. Для сохранения рабочей области MATLAB используется команда save. Команда save имя файла выгружает все переменные из рабочей области в двоичный файл с именем имя файла.mat. Если имя файла отсутствует, то ему присваивается специальное имя matlab.mat. Команда save имя файла A B C выгружает переменные А, В, С. Для очистки рабочей области используется команда clear all. Для очистки экрана используется команда clc. Для загрузки переменных в рабочую область используется команда load. Команда load без параметров считывает данные из файла matlab.mat, если он создан командой save. Команда load имя файла загружает переменные из mat-файла имя файла.mat. После загрузки переменных в рабочую область бывает необходимо вывести список переменных текущей рабочей области. Эта операция выполняется с помощью команды who. Задание для выполнения работы 1. В рабочем окне MATLAB ввести матрицу А. 2. Выделить из матрицы А подматрицу В. 3. Выделить из матрицы А подматрицу С. 4. Извлечь из матрицы А диагональ D. 5. Умножить матрицу В на матрицу С с точкой и без точки. 6. Разделить матрицу В на матрицу С левым делением с точкой и без точки. 7. Разделить матрицу В на матрицу С правым делением с точкой и без точки. 8. Транспонировать матрицу A. 9. Построить с помощью функции plot вектор, состоящий из всех строк третьего столбца матрицы А. 10. Построить трехмерный график матрицы А в зависимости от номера элемента по строкам и столбцам с использованием команд mesh и surf с использованием различной цветовой палитры и с возможностью поворачивать изображение под разными ракурсами. 11. Сохранить переменные А,В,С,D в mat-файле. 12. Очистить рабочую область. Очистить экран. Загрузить сохраненные переменные в рабочую область. Вывести список переменных.
Варианты заданий для работы Вариант 1: А =
B=
С=
D= 0.997 0.0446 0.0057
Вариант 2: А=
Вариант 3:
B = Вариант 5: А =
В=
С=
D =
Вариант 6: А =
В=
С=
D =
Вариант 7: А =
В=
С=
D =
Вариант 8: А =
В=
С=
D =
Вариант 9: А =
В=
С=
D =
Вариант 10: А =
В=
С=
D =
Работа № 2. Элементы программирования в МАТ1АВ Цель работы: приобретение навыков работы с m-файлами; создание программ-функций, работа с циклами и условными операторами. При использовании ввода данных в рабочем окне MATLAB работает в режиме интерпретации команд и операторов: они вводятся в ходе сеанса в командной строке, a MATLAB выполняет их немедленную обработку и выдает вычисленный результат. Примером такого режима работы являются команды решения системы уравнений, нахождения пределов функций и обработки матриц. Команда solve позволяет решать уравнения и системы уравнений. Так, например, функция g=solve(‘eq ’) решает уравнение, заданное в виде символьного, либо строкового выражения с указанием или без указания знака равенства. Если знак равенства не указан, то предполагается уравнение вида eq=0. Переменная, относительно которой ищется решение, если она не указана явно, определяется автоматически с помощью функции findsytn. Функция g=solve(‘eq’,var) решает уравнение относительно переменной var. Функции g=solve(‘eql’eq2'eqn’) и g=solve(‘eql’, ’eq2\... ’eqn’,varl,var2,...varn) решают системы уравнений относительно п переменных. Причем для систем уравнений с одним выходным аргументом решение возвращается в виде массива записей. Для того, чтобы решения вернулись упорядоченными по именам переменных, нужно задать число выходных аргументов в квадратных скобках, равное числу переменных. Фундаментальная идея нахождения предела функции заключается в достижении переменной определенного значения. Вспомните, что определение производной дается пределом при условии, что он существует. Symbolic Math Toolbox позволяет вычислить пределы функции впрямую. Команды syms h n х limit((cos(x+h) - cos(x))/h,h,0) которые возвращают ans = -sin(x) и limit((I + x/n)^n, n, inf), которые возвращают ans= exp(x), иллюстрируют два наиболее важных предела в математике: производную (случай с cos х) и экспоненциальную функцию. Поскольку многие пределы являются двусторонними т.е. приближениями слева и справа к а, пределы в особенных точках таковыми не являются. Поэтому три предела , , соответствуют трем достижимым результатам: неопределенному, и соответственно. В случае неопределенного результата, Symbolic Math Toolbox возвращает NaN (не число). Команда limit (1/х,х,0) или limit(1/х) возвращают ans = NaN. Команда limit(l/x,x,0,'lejt') возвращает ans = -inf тогда как команда limit(l/x,x,0,'right') возвращает ans =. inf. Примечание: Заметьте, что по умолчанию limit(f) является тем же самым, что limit(f,x,0). Опции команды limit представлены в таблице. Заметьте, что функция /является функцией символьного объекта х
Система MATLAB работает с данными, представленными в различных форматах. Наиболее часто используются данные, представленные в так называемых ASCII-кодах (American Standard Code for Information Interchange) и в двоичных кодах. Файлы данных, представленных в ASCII-кодах, должны иметь расширение.ууу и не содержать никаких других символов, кроме цифр и точки. Они создаются в текстовом редакторе (например, в Norton Commander с помощью команды Shift F4) и загружаются в командное окно MATLAB с помощью команды load *.ууу (* обозначает имя файла). Иногда бывает необходимо преобразовать размеры матрицы, например, заменить строки столбцами, а столбцы строками. Это можно сделать с помощью команды B=reshape(A,m,n), которая возвращает матрицу размером т х п, сформированную из элементов матрицы А путем их последовательной выборки по столбцам. Однако в пакете MATLAB есть возможность обработки заранее подготовленной последовательности команд и операторов, записанной в виде файла. М-файлы, содержащие команды и операторы MATLAB, разделяются на файлы-сценарии и процедуры-функции. Программирование осуществляется в окне MATLAB Editor/Debugger, которое вызывается последовательностью команд меню: File-New-M-File Если первая строка М-файла начинается с определения function[список выходных переменных]=имя функции(список входных переменных),то этот файл представляет собой М-функцию. Она может быть сохранена в текущем каталоге с помощью последовательности команд меню: File-Save или File-Save As. Для предотвращения путаницы рекомендуется сохранять такой М-файл под именем функции, но в принципе имена М-файла и функции могут отличаться. Например, function [G]=maxl(A,k,s). Стандартная структура М-функции должна быть следующей: • Первая строка объявляет имя функции, ее входные и выходные аргументы. • Для обозначения строк комментариев служит символ «%». • Переменные в теле функции являются локальными, т.е. значения таких переменных можно изменять и переприсваивать, так как они изолированы от переменных других функций. В отличие от универсальных языков программирования переменная цикла в языке MATLAB является массивом. Рассмотрим операторы циклов, применяемые в MATLAB.
|