Главная Другое
Экономика Финансы Маркетинг Астрономия География Туризм Биология История Информатика Культура Математика Физика Философия Химия Банк Право Военное дело Бухгалтерия Журналистика Спорт Психология Литература Музыка Медицина |
страница 1 Лабораторная работа № 3 ЦЕЛЬ РАБОТЫ Изучение общих принципов работы c матрицами в системе Matlab, сервисных функций и элементов программирования, приобретение практических навыков использования средств Matlab для создания и работы с матрицами, сервисными функциями и элементами программирования. ОСНОВНЫЕ СВЕДЕНИЯСпециальные символы для создания матриц в Matlab К классу операторов в системе Matlab относятся некоторые специальные символы. Ниже приведено их описание. [] Квадратные скобки Квадратные скобки используются для формирования векторов и матриц. Векторы и матрицы формируются следующим образом. Для создания вектора-строки используются несколько способов:
>> x=[1 2 3 4 5 ]
>> x=1:2:10 >> x=1:10 - если значение шага равно 1, его можно не указывать. Для создания вектора-столбца надо транспонировать полученный вектор-строку (см. пункт '(одиночная кавычка) ниже). Для создания вектора-столбца используется перечисление элементов вектора через точку с запятой: >> x=[1;2;3;4;5] Для создания матрицы можно использовать варианты непосредственного введения элементов:
>> x=[1 2 3; 4 5 6; 7 8 9 ]
>> x=[[1;4;7] [2;5;8] [3;6;9]]
>> x=[1 2 3 4 5 6 7 8 9]
Круглые скобки используются для: - задания порядка выполнения операций в арифметических выражениях. - указания последовательности аргументов функции. - указания индексов элементов векторов или матриц. Например, если Х и V – векторы, то Х(V) можно представить как [Х(V(1)),V(V(2)),…X(V(n))]. Элементы вектора V должны быть целыми числами, чтобы использоваться для индексирования элементов. Ошибка генерируется в том случае, если индекс элемента меньше единицы или больше размера массива. Пустые квадратные скобки удаляют информацию из индексированной структуры. A(m,:)=[] – удаляет строку m из матрицы A. A(:,n)=[] – удаляет столбец n из матрицы A. : (двоеточие) Двоеточие используется: – для формирование вектора-строки: j:i:k – то же что и [j,j+i,j+2i, …,k], то есть j – это начальное значение вектора, i – это шаг, к – это конечное значение вектора. - в индексировании матрицы для выбора строки, столбцы и элементов: A(:,j) – это j-ый столбец из A. A(i,:) – это i -ая строка из A. A(j:k) – это A(j),A(j+1),…,A(k). A(:,j:k) - это A(:,j),A(:,j+1),…,A(:,k). ,(запятая) Запятая используется для разделения индексов элементов матрицы и аргументов функции и для отделения операторов языка Matlab. Например, задана матрица A: >>A=[1 3 5;7 9 0;2 4 6]; Команда обнуления последнего элемента матрицы: >>A(3,3)=0; % разделение индексов ;(точка с запятой) Точка с запятой используется для подавления вывода на экран результата вычислений и для формирования вектора-столбца. %(знак процента) Знак процента используется для ввода комментария. '(одиночная кавычка) Одиночная кавычка используется для создания строковой константы, например: >> a='Введите матрицу '; для массивов одиночная кавычка используется для выполнения операции транспонирования. Для комплексных матриц транспонирование дополняется сопряжением матрицы. Пример. Создание вектора-строки с использованием специальной конструкции и транспонирование его в вектор-столбец: начальное значение равно 9, конечное – 18, шаг равен 2. >> a=9:2:18 a = 9 11 13 15 17 >> a1=a' a1 =
9 11 13 15 17
Точка с одиночной кавычкой используется для транспонирования массива без операции сопряжения для комплексных матриц. Конкатенация (объединение) Ранее сформированные массивы могут участвовать в создании новых массивов в качестве их элементов. Для этого может быть использована конкатенация: [,] (горизонтальная конкатенация) M=[А,В] – горизонтальная конкатенация (объединение) матриц А и В. А и В должны иметь одинаковое число строк. Горизонтальная конкатенация может быть применена для любого числа матриц в пределах одних скобок [A,B,C]. Пример создания матрицы горизонтальной конкатенацией: >> A=[1 2 4; 5 6 7] A = 1 2 3
5 6 7 [;] (вертикальная конкатенация) K= [А; В] – вертикальная конкатенация (объединение) матриц А и В. А и В должны иметь одинаковое число столбцов. Вертикальная конкатенация может быть применена для любого числа матриц в пределах одних скобок [A;B;C]. Горизонтальная и вертикальная конкатенация могут быть объединены вместе [A;B,C] или [A,B;C]. A.*B, A./B- поэлементные умножение и деление; A.^p - поэлементное возведение в степень, p - число; A.^B - возведение элементов матрицы A в степени, равные соответствующим элементам матрицы B; A.' - транспонирование матрицы (для вещественных матриц A' и A.' приводят к одинаковым результатам). Функции обработки данных
Функции для создания стандартных матриц
Очень удобной возможностью MatLab является конструирование матрицы из матриц меньших размеров. Пусть заданы матрицы: ![]() ![]() ![]() ![]() Требуется составить из ![]() Можно считать, что >> M=[M1 M2; M3 M4]
Функция linspace(a,b) генерирует вектор, значения элементов которого меняются с постоянным шагом. v= linspace(a,b) - в вектор v заносится 100 значений от а до b. v= linspace(a,b,n) - в вектор v заносится n значений от а до b. >> v=linspace(5,15,3) v = 5 10 15
Функция logspace(a,b) генерирует вектор, значения элементов которого меняется с постоянным шагом в логарифмической шкале. v= logspace(a,b) в вектор v заносится 50 значений от 10a до 10b. v= logspace(a,b,n) в вектор v заносится n значений от 10a до 10b. >> v1=logspace(1,2,2) v1 = 10 100
Функция zeros создает матрицу, заполненную нулями: x=zeros(m,n) – задание матрицы mn нулей. x=zeros(n) - задание квадратной матрицы из nn нулей. Пример.
>> x=zeros(2,3) x = 0 0 0 0 0 0 Для квадратной матрицы в аргументах задается только одно значение. Функция ones создает матрицу, заполненную единицами: x=ones(m,n) и x= ones(n) – создание единичной матрицы (синтаксис аналогичный предыдущей функции). >> ones(2) ans =
1 1 1 1
Функция randn: x= randn (m,n) – задание матрицы mn нормально-распределенных случайных чисел. X= randn (n) - задание квадратной матрицы nn. Функция rand: x= rand (m,n) – задание матрицы mn равномерно-распределенных случайных чисел. Пример создания матрицы вертикальной конкатенацией: >> x1=[ones(2,1);zeros(2,1)] x1 = 1
0 0 Пример создания матрицы горизонтальной конкатенацией: >> x1=[ones(2,1),zeros(2,1)] x1 =
1 0 1 0
Для создания матриц, состоящих из других матриц, можно использовать функцию repmat(). B = repmat(A,M,N) – создает матрицу B, состоящую из (M строк и N столбцов) MN копий матрицы A. B = repmat (A,M,N) - если А – число, функция формирует матрицу MN со значением элементов равными А. Пример : >> repmat(10,2,3) ans = 10 10 10
10 10 10 Сервисные функции who – выводит имена всех определенных в рабочей среде переменных. >> a=rand(3); >> who Your variables are: a whos – выводит информацию о переменных рабочей среды. >> whos
Name Size Bytes Class a 3x3 72 double array Grand total is 9 elements using 72 bytes
>> v=[1 2 3]; >> s=size(v) s =
или [M,N] = size(s) M – число строк, N – число столбцов >> s=ones(2,3) s =
1 1 1 1 1 1
>> [M,N]= size(s) M =
2 N =
3 max и min – вычисляет вектор строку, содержащую максимальные или минимальные элементы в каждом столбце матрицы. >> v=rand(3) v = 0.1934 0.5417 0.3784 0.6822 0.1509 0.8600 0.3028 0.6979 0.8537 >> ma=max(v) ma =
0.6822 0.6979 0.8600 Для того чтобы узнать не только значения максимальных или минимальных элементов, но и их номера в столбцах или столбцах, используют следующий вызов: [Y,I] = max(X,[],DIM) [Y,I] = min(X,[],DIM) где Y – значения максимальных элементов, I – номера элементов, DIM – номера размерности: 1 – по столбцам,. 2 – по строкам. По умолчанию ([Y,I] = min(X,[],DIM) Пример. Найти максимальные значения элементов матрицы 22 >> v=rand(2) v =
0.7382 0.4057 0.1763 0.9355 в столбцах >> [mx, r]=max(v,[],1) mx = 0.7382 0.9355 r = 1 2
в строках >> [mx, r]=max(v,[],2) mx = 0.7382
0.9355 r =
1 2
Пример. Преобразовать матрицу из предыдущего примера в вектор-строку и найти самое максимальное и минимальное значение. >> [M,N]= size(v); >>к= reshape(v,1,M*N) к =
0.7382 0.1763 0.4057 0.9355 >> max(к) ans = 0.9355 >> min(k) ans = 0.1763
>> c=ones(2,5); >> length(c) ans =
5 ndims – определяет общее количество размерностей массива. >> n=ndims(c) n = 2
Операторы цикла Цикл for for count = start:step:final команды MatLab end
Здесь count – переменная цикла, start – ее начальное значение, final – конечное значение, а step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count будет больше значения final. Пример 1. Составить вектор из 6 элементов геометрической прогрессии. Элементы геометрической прогрессии рассчитываются по формуле Pn=P1*qn-1. Пусть P1=3, q=2, n=6. >>P(1)=3; q=2; >> for i=1:6 P(i+1)=P(i)*q^i; end;
>> P P =
3 6 24 192 3072 98304 6291456 Пример 2. Создать структуру, содержащую матрицы размерность 33 и ввести две матрицы с клавиатуры, после ввода вывести содержимое массива матриц и записать матрицы на диск. >> mas=struct('h',zeros(3)); >> for i=1:2 mas(i).h=input('введи матрицу '); end введи матрицу [1 2 3;5 6 7;8 9 0]; введи матрицу [3 5 9;1 1 2;9 5 5]; >> mas(1).h ans = 1 2 3
5 6 7 8 9 0
>> mas(2).h ans =
3 5 9 1 1 2
9 5 5 Запись матриц на диск: >> for i=1:2 ch = int2str (i); % функция перевода числовых значений в строковые ch1 = 'c:\f'; ch2 = '.txt'; str = strcat (ch1, ch, ch2); % функция объединения строковых значений [F,mes]=fopen(str,'wt'); fprintf(F,'%d %d %d \n', mas(i).h); fclose (F); end
Цикл while работает, пока выполняется условие цикла while <условие цикла> команды MatLab end
Пример. Поиск максимального значения матрицы v: >> v=rand(3) v = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 >> f=v; >> while length(f)~=1 % или max(size(f)) ~=1 f=max(f); end
f =0.9501 Операторы ветвления Условный оператор if и оператор переключения switch позволяют создать гибкий разветвляющийся алгоритм выполнения команд, в котором при выполнении определенных условий работает соответствующий блок операторов. Условный оператор if Оператор if может применяться в простом виде, для выполнения блока команд при выполнении некоторого условия, или в конструкции if-elseif-else для написания разветвляющего алгоритма: if условие команды MatLab end Для ветвления if условие команды MatLab elseif условие команды MatLab elseif условие команды MatLab else команды MatLab end В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else. Оператор switch Позволяет создавать более наглядную программу switch <ключ> case <значение ключа-1> команды MatLab case <значение ключа-2> команды MatLab … otherwise команды MatLab end
ЗАДАНИЯ:
1. ![]() ![]() 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ![]() ![]() ВОПРОСЫ: 1 Создание векторов в системе Matlab.
Смотрите также: Общие принципы работы с матрицами в системе matlab лабораторная работа №3
149.49kb.
1 стр.
Лабораторная работа. Системный реестр Windows
74.22kb.
1 стр.
Лабораторная работа №12 процедуры и функции цель работы: Изучить принципы работы с процедурами и функциями Общие сведения
66.1kb.
1 стр.
Лабораторная работа №7 обработка двумерных массивов цель работы: Изучить принципы работы с двумерными массивами. Общие сведения
76.78kb.
1 стр.
Лабораторная работа №6 обработка одномерных массивов цель работы: Изучить принципы работы с одномерными массивами. Общие сведения
97.36kb.
1 стр.
Лабораторная работа по химии, физике, биологии, т е. по естественно-научным предметам. На уроках русского языка и литературы термин «лабораторная работа»
261.84kb.
1 стр.
Лабораторная работа Процедуры настройки параметров персептронных нейронных сетей. Правила настройки
76.71kb.
1 стр.
Лабораторная работа №5 Лабораторная работа выполняется согласно выбранной теме курсовой работы!!! Количество таблиц в бд: от 4 до 6
46.6kb.
1 стр.
Лабораторная работа №1 Построение детерминированного синтаксического анализатора
278.71kb.
1 стр.
Лабораторная работа Использование стандартных компонентов в C++ Builder
87.05kb.
1 стр.
Лабораторная работа 9-01 Лабораторная Шонин В. А. работа 9-01 Использование табличной верстки для создания Web-страниц
446.97kb.
1 стр.
Основы работы с Excel Работа с функциями Excel Создание числовых последовательностей Работа с матрицами и их преобразование Построение графиков Поиск решения уравнения и системы уравнений 80.81kb.
1 стр.
|