Red4u.ru

SEO Сервисы и программы
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Matlab задание массива

Matlab задание массива

Массивы чисел в системе MATLAB

Наборы чисел в программировании принято называть массивами. Всему массиву присваивается одно имя, а доступ к отдельным элементам массива осуществляется по целочисленному индексу, то есть номеру элемента в массиве. Массивы бывают одномерными, когда используется единственный индекс (номер), а могут быть и многомерными (в частности — двумерными).

Сначала рассмотрим одномерные массивы. Это линейные наборы чисел (элементов), в которых позиция каждого элемента задаётся единственным числом — его номером. Можно говорить о первом элементе массива, о втором и т.д.

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

формирует переменную с именем a1 , являющуюся одномерным массивом из трёх элементов (вещественных чисел). Объединяемые в массив элементы должны отделяться друг от друга либо пробелом, либо запятой. Так что выражение

абсолютно идентично предыдущему.

Для доступа к индивидуальному элементу одномерного массива нужно после его имени указать в круглых скобках индекс (номер) этого элемента. Например, третий элемент массива a1 обозначается как a1(3) , первый элемент — как a1(1) , второй элемент — как a1(2) .

Если требуется изменить третий элемент уже сформированного выше операцией конкатенации массива a1 , то можно применить операцию присваивания:

Пусть, к примеру, второй элемент массива a1 должен стать равным среднему арифметическому первого и третьего элементов. Для этого выполняем следующее действие:

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

При попытке чтения несуществующего элемента (напрмер, четвёртого элемента массива a1 ) в командном окне MATLABа появляется сообщение об ошибке:

В этом сообщении утверждается, что индекс превысил размер массива.

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

Применяя к массиву a1 функцию length , находим, что количество элементов в этом массиве возросло до четырёх:

То же самое действие — «удлинение массива a1 » ,можно выполнить и с помощью операции конкатенации:

Здесь операндами операции конкатенации являются массив a1 , состоящий из трёх элементов, и добавляемый к нему четвёртый элемент, равный 7 .

Теперь создадим ещё один одномерный массив a2 , причём для его создания не будем использовать операцию конкатенации (как мы поступили выше). Вместо этого будем прописывать каждый элемент создаваемого массива по-отдельности:

a2(1) = 67
a2(2) = 7.8
a2(3) = 0.017

Из двух существующих массивов — массива a1 с четырьмя элементами и массива a2 с тремя элементами, можно одной (групповой) операцией конкатенации создать одномерный массив b из семи элементов:

Массивы могут состоять не только из вещественных чисел. Выражение

d = [ 1+2i, 2+3i, 3-7i ]

формирует одномерный массив d комплексных чисел. Разделителем элементов формируемого одномерного массива может быть либо пробел, либо запятая. При использовании выражений и комплексных чисел использование запятой предпочтительнее.

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

Двумерный массив характеризуется количеством строк и количеством столбцов. Составим массив a3 , состоящий из двух столбцов и трёх строк:

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

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

a3(1,1) = 1
a3(1,2) = 2
a3(2,1) = 3
a3(2,2) = 4
a3(3,1) = 5
a3(3,2) = 6

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

Система MATLAB может работать и с массивами больших размерностей. Они будут рассматриваться позже в следующем разделе.

Вернёмся к двумерным массивам, которые в математике принято называть матрицами. Любая строка матрицы является одномерным массивом, и любой столбец матрицы также является одномерным массивом. Однако есть некоторая разница в упорядочении их элементов с точки зрения матриц: элементы первого одномерного массива упорядочены вдоль строк матрицы (горизонтально), а элементы второго — вдоль столбцов (вертикально). Если явно учитывать в понятии одномерного массива эту разницу, то тогда массивы первого типа называют вектор-строками, а второго типа — вектор-столбцами. В этом случае также можно считать, что вектор-строки являются частным случаем матрицы с количеством строк, равным единице, а вектор-столбцы являются частным случаем матрицы с количеством столбцов, равным единице.

В системе MATLAB все одномерные массивы трактуются либо как вектор-строки, либо как вектор-столбцы. До сих пор мы вводили только вектор-строки. Следующее выражение, использующее операцию конкатенации, задаёт вектор-столбец

состоящий из трёх строк, так как точка с запятой в операции конкатенации означает переход на новую строку.

Для массива a4 функция length(a4) возвращает число 3 , так как действительно этот массив состоит из трёх элементов. Функция length не различает вектор-строки и вектор-столбцы.

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

То есть MATLAB распознаёт «геометрию» этого одномерного массива и наглядно отображает его, располагая элементы для показа в своём окне вертикально.

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

причём первым показывается число строк, а вторым — число столбцов.

Применяем эту же функцию к одномерным массивам. Вот, что из этого получается для вектор-строки a2

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

Наконец, попробуем применить эту функцию к переменной, состоящей из единственного числового значения, то есть к скаляру:

var1 = 5
size(var1)
ans =
1 1

Отсюда видно, что система MATLAB трактует даже по-существу скалярные величины как массивы с размером 1×1. Это ровным счётом ничего не меняет для пользователя, так как он может не обращать на это никакого внимания. MATLAB переходит от скаляров к массивам прозрачно, не требуя от пользователя дополнительных действий.

Итак, всё, с чем работает MATLAB, является массивами различной размерности. Все массивы из текущего сеанса работы (текущего Рабочего пространства) можно просмотреть

с точки зрения их структуры с помощью команды whos .

РАБОТА С МАССИВАМИ В СЕДЕ MATLAB

Транскрипт

1 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. Р. Е. АЛЕКСЕЕВА» КАФЕДРА «КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В ПРОЕКТИРОВАНИИ И ПРОИЗВОДСТВЕ» РАБОТА С МАССИВАМИ В СЕДЕ MATLAB ЛАБОРАТОРНАЯ РАБОТА по дисциплине «Математический аппарат динамических систем» для магистрантов очной формы обучения по направлениям подготовки. «Конструирование и технология радиоэлектронных средств». «Инфокоммуникационные технологии и системы связи». «Радиотехника» (профиль подготовки «Техника СВЧ и антенны»), по дисциплине «Модели динамических систем для магистрантов очной формы обучения по направлению подготовки 9.. «Информационные системы и технологии» Нижний Новгород

Читайте так же:
Неформальные средства защиты информации

3 Составитель Кукушкин А.В. УДК 68 Работа с массивами в среде MATLAB: лаб. работа по дисциплине «Математический аппарат динамических систем» для магистрантов очной формы обучения по направлениям подготовки. «Конструирование и технология радиоэлектронных средств». «Инфокоммуникационные технологии и системы связи». «Радиотехника» (профиль подготовки «Техника СВЧ и антенны»), по дисциплине «Модели динамических систем для магистрантов очной формы обучения по направлению подготовки 9.. «Информационные системы и технологии», Нижегородский Государственный технический университет им. Р. Е. Алексеева, 7 с. Нижегородский государственный технический университет им. Р.Е. Алексеева, Кукушкин А. В.,

5 . Цель работы Целью работы является приобретение навыков работы с массивами в программной среде MatLab, т.к. все данные в MatLab представляются и хранятся в виде массивов. В работе изучаются операции и вычисления с векторами (одномерные массивы) и матрицами (двумерные массивы).. Краткие сведения из теории Массив с присвоенным ему именем упорядоченная, пронумерованная совокупность однородных данных [, ]. Массивы различаются по числу измерений: одномерные, двумерные и многомерные. Размером массива называют число элементов по каждому измерению. Доступ к элементам осуществляется с помощью индекса (нумерация элементов начинается с индекса, равного единице). Если вектор (векторстрока или вектор-столбец), матица или тензор являются математическими понятиями (объектами), то одномерные, двумерные и многомерные массивы это способы хранения или представления этих объектов в компьютере.. Задания к работе и порядок ее выполнения Работа выполняется в командной строке (в консоли) пакета MatLab по инструкциям, приведенным в описании. Контрольные задания следуют по тексту описания.. Одномерные массивы. Умножение векторов Векторы можно перемножать между собой скалярно, векторно или образовывать так называемое «внешнее произведение». В первом случае образуется скаляр (число), во втором вектор и в третьем матрица. Скалярное произведение двух векторов, хранящихся в массивах a, b с длиной N, определяется формулой N a b a b k k. Поэтому используется поэлементное перемножение массивов, т. е. если

6 a. 7 b то в командной строке нужно набрать: >> a=[.; -.;.7]; >> b=[.; 6.; -.9]; >> s=sum(a.*b) Для вычисления модуля (длины) вектора a набираем команду >> d=sqrt(sum(a.*a)) Векторное произведение определено только в трехмерном пространстве и его результатом будет также трехмерный вектор. Для этого в MATLAB имеется команда cross. >> a=[.; -.;.7]; >> b=[.; 6.; -.9]; >> c=cross(a,b) Задание: для тренировки вычислите a b b a. Вы должны получить трехмерный вектор с тремя нулевыми компонентами. Смешанное произведение трех векторов a b c дает объем параллелепипеда, построенного на этих векторах как на гранях. Задание: задайте три соответствующих векторных массива по своему усмотрению и используя команду >> V=abs(sum(a.*cross(b,c))) вычислите значение соответствующего объема. «Внешним» произведением векторов с длинами N и M является матрица размера M N, где вычисление элементов проводится по правилам матричного умножения, для чего служит команда >> c=a*b «Звездочка» служит оператором матричного умножения, а «апостроф» транспонирует матрицу b. Задание: проделайте самостоятельно соответствующие упражнения с векторами a и b различной длины.,

7 Используйте далее команду whos для просмотра переменных рабочей среды. Двумерные массивы. Матрицы. Ввод матриц. Простейшие операции. Матрицу A можно рассматривать как вектор-строку из трех элементов, каждый из которых является вектор-столбцом длиной два, либо как вектор-столбец из двух элементов, каждый из которых суть вектор-строка длиной три. Следовательно, для ее введения можно использовать де команды >> A=[[;] [;] [-;]] >> A=[ -; ] Другой способ набора состоит в следующем. Начните набирать в командной строке (используя для перехода к следующей строке клавишу «Enter»), >> B=[ 7 — ] нажав после замыкающей квадратной скобки клавишу «Enter», вы получите результат: B 7 Сложение и вычитание матриц происходит поэлементно с использованием обычных алгебраических команд, поэтому нужно следить за совпадением размерностей матриц. Наберите сначала матрицу С такой же размерности, что и матрица А, и сложите их, проверив полученный результат.

8 6 >> C=[[;] [-;] [7;]]; >> S=A+C Для умножения матриц предназначена «звездочка» >> P=C*B P = Умножать матрицу на число можно также, используя «звездочку». >> P=A* (или P=*A) Транспонирование матрицы, как и вектора, производится при помощи команды. символ означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам. >> B’ ans = >> B.’ ans = Сопряжение и транспонирование матриц, содержащих комплексные числа, приведут к созданию разных матриц. >> K=[-i,+i;-i,-9i]

9 K =. -.i. +.i. -.i. — 9.i >> K’ ans =. +.i. +.i. -.i. + 9.i >> K.’ ans =. -.i. -.i. +.i. — 9.i Возведение квадратной матрицы в целую степень производится при помощи оператора ^. >> B=B^ B = Задание: найдите значение следующего выражения A C B A C T где верхний индекс Т означает транспонирование. Поскольку вектор-столбец или вектор-строка в MATLAB являются матрицами, у которых один из размеров равен единице, то вышеописанные операции применимы и к перемножению матриц с векторами. Задание: вычислите выражение, 7

10 Решение систем линейных алгебраических уравнений При помощи алгебраических операций с матрицей и вектор-столбцом в MATLAB можно решать системы линейных алгебраических уравнений. Решим систему с тремя неизвестными.x.x.x.; x.x.x..9; ().9x.7x.6x.. Задание: введите матрицу коэффициентов системы () в массив А, для вектора коэффициентов правой части системы используйте массив b. Решите систему при помощи символа 8 >> x=ab Проверьте правильность результата, умножив А на x. Считывание и запись данных Часто требуется найти решение системы, состоящей из большого числа линейных уравнений, причем матрица и вектор коэффициентов системы хранятся в файлах. Перед нами стоит задача решить систему, матрица и правая часть которой хранятся в текстовых файлах matr.txt, rside.txt, и записать результат в файл sol.txt. Матрица записана в файле построчно, элементы в строке отделены пробелом, вектор правой части записан в столбик. Задание: подготовьте файлы с данными системы () в стандартной программе Windows Блокнот (NotePad). Скопируйте файлы matr.txt, rside.txt в подкаталог work основного каталога MATLAB. Для считывания из файла используйте команду load,

11 для записи save. Формат вызова этих команд с выходными аргументами: >>A=load( matr.txt ); >>b=load( rside.txt ); >>x=ab; >>save sol.txt x ascii Параметр ascii означает запись в текстовом формате. После выполнения этих команд в каталоге work создается файл sol.txt, в котором в столбик записано решение системы. Посмотреть содержимое файла можно, используя любой текстовый редактор. Запись с двоичной точностью требует команды save sol.txt x ascii double. Аналогично можно записать и содержимое массива матрицы А в текстовый файл. Командой >> save sol.txt A ascii массив матрицы A записывается в файл matra.txt. Блочные матрицы. Часто в приложениях возникают матрицы, составленные из непересекающихся блочных матриц. Соответствующие размеры блоков должны совпадать. Введите матрицы A B C D и создайте из них блочную матрицу K A C B D >> A=[- ;- ]; >> B=[ ; ]; >> C=[ -;- ]; 9

Читайте так же:
Индивидуальные средства защиты от статического электричества

12 >> D=[8 9; ]; >> K=[A B;C D] K = Составьте блочную матрицу где a S K, b. S a b Заполнение матриц при помощи индексации и создание матриц специального вида Сгенерируем матрицу Генерация матрицы осуществляется в три этапа. T. Создание массива Т размером пять на пять, состоящего из нулей.. Заполнение первой строки единицами.. Заполнение части последней строки минус единицами до последнего элемента..

13 Доступ к элементам матриц осуществляется при помощи аргумента, состоящего из двух индексов номеров строки и столбца. Например, >>A(,) вызывает элемент матрицы А, стоящий во второй строке и третьем столбце. Поэтому команды для генерации матрицы Т будут иметь вид >> A(. )= A = >> A(,:)= A = >> A(end,:end)=- A =

14 — — — Создание некоторых специальных матриц в осуществляется при помощи встроенных функций. MATLAB Заполнение прямоугольной матрицы нулями проводится обращением к встроенной функции zeros, аргументами которой является число строк и столбцов матрицы. >> A=zeros(,6) A = >> A=zeros() A = Единичная матрица генерируется функцией eye. Примеры: >> I=eye() I = >> I=eye(,8) I =

15 Матрица, состоящая из одних единиц, вызывается функцией ones: >> E=ones(,) E = Функция rand вызывает матрицу, заполненную случайным образом числами от нуля до единицы, функция randn создает матрицу чисел, распределенных по нормальному закону. >> R=rand(,) R = >> RN=randn(8) RN =

16 Функция diag формирует диагональную матрицу из векторстолбца или вектор-строки, располагая их элементы по диагонали. Для заполнения не главной, а побочной диагонали предусмотрена возможность вызова этой функции с двумя аргументами. Примеры: >> d=[ ]; >> D=diag(d) D = >> d=[;]; >> D=diag(d,) D = >> D=diag(d,-)

17 D = Подумайте, почему в двух последних случаях не указывается размер матрицы? Функция diag служит и для выделения диагонали матрицы в вектор, например >> A=[ ; ; 7]; >> d=diag(a) d = 7 Задание: заполните и запишите в файлы следующие матрицы.. G M

18 ..6. Поэлементные операции с матрицами Поэлементные операции с матрицами проводятся обычным образом, т.е. с использованием «точки» перед соответствующим оператором. Например, умножение первой матрицы на вторую (разумеется, того же размера!) производится оператором.*, деление элементов первой матрицы на соответствующие элементы второй производится с помощью оператора./, наоборот, деление элементов второй матрицы на элементы первой проводится оператором.. Введите две матрицы A 9 B 7 8. Проделайте с ними операции: >>C=A.*B >>R=A./B >>R=A.B >>P=A.^ >>PB=A.^B () Выведите последний результат в «длинном» формате, используя команду format long >> format long >>PB Обратите внимание, что повторного вычисления матрицы PB не потребовалось, так как все вычисления всегда ведутся с двойной точностью.. Контрольные вопросы.. Объясните, почему в отличие от операций сложения и вычитания можно и нужно перемножать матрицы разной 6

19 размерности. Какие параметры размерностей перемножаемых матриц должны совпадать, чтобы избежать ошибки. Объясните, почему операцию «возведение в степень» можно проводить только с квадратными матрицами и целыми степенями. Что сделал MATLAB в примере ()?. Список литературы ) Дьяконов В.П. MATLAB 6/6./6. + Simulink /. Основы применения. Полное руководство пользователя, / В.П. Дьяконов. М.: СОЛОН-Пресс,. 768с. ) Мэтьюз Д. Г. Численные методы. Использование MATLAB: [пер. с англ.], / Д. Г. Мэтьюз, К. Д. Финк. М.: Изд. дом «Вильямс»,. 7с. ) Теория аналитических функций. Аспекты приложений, / Л.В. Широков и др. Арзамас, АГПИ, 7. 87с. ) Свешников А.Г. Теория функций комплексного переменного, / А.Г. Свешников, А.Н., Тихонов М.: Наука, 979. ) Бейтмен Г. Высшие трансцендентные функции. Т., / Г. Бейтмен, А. Эрдейи. M.: Наука,

Формированиемассивов данных в системе MATLAB

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

Высшего профессионального образования

«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ

УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА

(национальный исследовательский университет)»

ОПЕРАЦИИС МАССИВАМИ И ПОЛИНОМАМИ В СРЕДЕ КОМПЬЮТЕРНЫХ ВЫЧИСЛЕНИЙ MATLAB

САМАРА 2012

Министерство образования и науки

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

Высшего профессионального образования

«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ

УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА

(национальный исследовательский университет)»

ОПЕРАЦИИС МАССИВАМИ И ПОЛИНОМАМИ В СРЕДЕ КОМПЬЮТЕРНЫХ ВЫЧИСЛЕНИЙ MATLAB

Методические указания к лабораторной работе

Составитель: А.А. Федотов

Операции с массивамии полиномами в среде компьютерных вычислений MATLAB:Метод. указания / Самар. гос. аэрокосм. ун-т.; сост. А.А. Федотов; Самара, 2012. 12 с.

В методических указаниях изложены основные сведения об особенностях работы с числовыми массивами и полиномами в среде программированияMATLAB.Рассматривается решение различных практических задач обработки одномерных и двумерных числовых массивов средствами среды MATLAB. Приведены порядок выполнения работы и требования к отчету.

Методические указания предназначены для студентов очно-заочной формы обучения, обучающихся по специальности 201000 «Биотехнические системы и технологии» и выполняющих лабораторные работы по дисциплине “Информационные технологии”. Подготовлены на кафедре радиотехники и медицинских диагностических систем.

Ил. 3. Библиогр. 3 назв.

Печатаются по решению редакционно-издательского совета Самарского государственного аэрокосмического университета имениакадемика С.П. Королева

Цель работы:ознакомление с особенностями выполнения различных операций над числовыми массивами и полиномами в среде компьютерных вычислений MATLAB.

Задачи:

1. Изучить синтаксис языка программирования MATLAB для работы с одномерными и двумерными числовыми массивами, а также полиномами.

2. Используя полученные теоретические сведения, выполнить задания лабораторной работы и подготовить отчет.

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАБОТЫ

Формированиемассивов данных в системе MATLAB

MATLABявляется системой компьютерных вычислений, специально предназначенной для осуществления сложных операций с векторами, матрицами и полиномами. Все данные в системе MATLABпредставлены в виде различных массивов – векторов и матриц. Под вектором в MATLAB понимается одномерный массив чисел, а под матрицей – двумерный массив.

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

Исходные значения вектора-строки можно задавать путем поэлементного ввода. Для этого вначале указывают имя вектора, затем ставят знак присваивания “=”, далее открывающую квадратную скобку “[“, за ней значения вектора, отделяя их между собой пробелами или запятыми. Запись завершается закрывающей квадратной скобкой “]”. На рисунке 1 приведено командное окно создания вектора-строки.

Вектор-столбец задается аналогично вектору строке, но элементы отделяются друг от друга знаком “;”. Для создания вектора-столбца можно также использоватьформу записи с указанием значений через пробел,при этом в конце добавляется апостроф . На рисунке 2 приведено командное окно создания вектора-столбца.

Язык программирования MATLAB дает пользователям возможность сокращенного ввода вектора, элементы которого являются арифметической прогрессией.

>>A=nz:h:kz

где: nz – начальное значение прогрессии (первый элемент вектора), kz – конечное значение прогрессии (последний элемент вектора), h – разность прогрессии (шаг).

Ввод элементов матрицы осуществляется по строкам. При этом элементы строки матрицы отделяются друг от друга пробелами или запятыми, а строки отделяются друг от друга знаком «;». На рисунке 3 приведено командное окно создания матрицы.

Читайте так же:
Php datetime compare

Рисунок 3 – Окно результата создания матрицы

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

Для того чтобы MATLAB не выводил каждый раз значение переменной после ее ввода, необходимо завершать ввод каждой команды знаком “;”.

Матрицу можно преобразовать в вектор-строку с помощью команды следующего вида:

Обращение к элементу матрицы А производится с помощью следующих команд:

A(i, j) – обращение к элементу i-й строки j-го столбца;

A(i, 🙂 – обращение к i-й строки;

A(:, j) – обращение кj-му столбцу.

Для удаления определенного элемента массива достаточно выполнить следующую команду:

>>A(2, 3)=[];

Данная операция удаляет элемент, находящийся во второй строке и третьем столбце. Операцию удаления можно применять не только к отдельному элементу, но и ко всей строке или ко всему столбцу матрицы.

Система MATLAB в отличие от многих других компьютерных систем вычислений устанавливает начальное значение индекса массива как единицу, а не ноль.

Для выполнения операции конкатенации массивов – объединения нескольких массивов в один, в системе MATLABнеобходимо выполнить следующие действия:

>>C=[AB] – горизонтальная конкатенация массивов;

>>C=[A; B] – вертикальная конкатенация массивов.

Для определения числа строк и столбцов матрицы Aв системе MATLAB существует Функция size (А), возвращающая вектор [n, p], содержащий данные о количестве строк и столбцов матрицы А, соответственно.

В системе MATLABсуществует несколько функций, которые позволяют формировать векторы и матрицы определенного вида:

zeros (M, N) – создает матрицу размером M на N с нулевыми элементами;

ones (M, N)– создает матрицу размером M на N с единичными элементами;

eye (M, N)– создает матрицу размером M на N с единицами по главной диагонали и всеми остальными нулями;

rand (M,N)– создает матрицу размером M на N из случайных чисел, распределенных по равномерному закону в диапазоне от 0 до 1;

randn (M,N)– создает матрицу размером M на N из случайных чисел, распределенных по нормальному закону в диапазоне от 0 до 1.

РАБОТА С МАССИВАМИ В СЕДЕ MATLAB

Транскрипт

1 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. Р. Е. АЛЕКСЕЕВА» КАФЕДРА «КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В ПРОЕКТИРОВАНИИ И ПРОИЗВОДСТВЕ» РАБОТА С МАССИВАМИ В СЕДЕ MATLAB ЛАБОРАТОРНАЯ РАБОТА по дисциплине «Математический аппарат динамических систем» для магистрантов очной формы обучения по направлениям подготовки. «Конструирование и технология радиоэлектронных средств». «Инфокоммуникационные технологии и системы связи». «Радиотехника» (профиль подготовки «Техника СВЧ и антенны»), по дисциплине «Модели динамических систем для магистрантов очной формы обучения по направлению подготовки 9.. «Информационные системы и технологии» Нижний Новгород

3 Составитель Кукушкин А.В. УДК 68 Работа с массивами в среде MATLAB: лаб. работа по дисциплине «Математический аппарат динамических систем» для магистрантов очной формы обучения по направлениям подготовки. «Конструирование и технология радиоэлектронных средств». «Инфокоммуникационные технологии и системы связи». «Радиотехника» (профиль подготовки «Техника СВЧ и антенны»), по дисциплине «Модели динамических систем для магистрантов очной формы обучения по направлению подготовки 9.. «Информационные системы и технологии», Нижегородский Государственный технический университет им. Р. Е. Алексеева, 7 с. Нижегородский государственный технический университет им. Р.Е. Алексеева, Кукушкин А. В.,

5 . Цель работы Целью работы является приобретение навыков работы с массивами в программной среде MatLab, т.к. все данные в MatLab представляются и хранятся в виде массивов. В работе изучаются операции и вычисления с векторами (одномерные массивы) и матрицами (двумерные массивы).. Краткие сведения из теории Массив с присвоенным ему именем упорядоченная, пронумерованная совокупность однородных данных [, ]. Массивы различаются по числу измерений: одномерные, двумерные и многомерные. Размером массива называют число элементов по каждому измерению. Доступ к элементам осуществляется с помощью индекса (нумерация элементов начинается с индекса, равного единице). Если вектор (векторстрока или вектор-столбец), матица или тензор являются математическими понятиями (объектами), то одномерные, двумерные и многомерные массивы это способы хранения или представления этих объектов в компьютере.. Задания к работе и порядок ее выполнения Работа выполняется в командной строке (в консоли) пакета MatLab по инструкциям, приведенным в описании. Контрольные задания следуют по тексту описания.. Одномерные массивы. Умножение векторов Векторы можно перемножать между собой скалярно, векторно или образовывать так называемое «внешнее произведение». В первом случае образуется скаляр (число), во втором вектор и в третьем матрица. Скалярное произведение двух векторов, хранящихся в массивах a, b с длиной N, определяется формулой N a b a b k k. Поэтому используется поэлементное перемножение массивов, т. е. если

6 a. 7 b то в командной строке нужно набрать: >> a=[.; -.;.7]; >> b=[.; 6.; -.9]; >> s=sum(a.*b) Для вычисления модуля (длины) вектора a набираем команду >> d=sqrt(sum(a.*a)) Векторное произведение определено только в трехмерном пространстве и его результатом будет также трехмерный вектор. Для этого в MATLAB имеется команда cross. >> a=[.; -.;.7]; >> b=[.; 6.; -.9]; >> c=cross(a,b) Задание: для тренировки вычислите a b b a. Вы должны получить трехмерный вектор с тремя нулевыми компонентами. Смешанное произведение трех векторов a b c дает объем параллелепипеда, построенного на этих векторах как на гранях. Задание: задайте три соответствующих векторных массива по своему усмотрению и используя команду >> V=abs(sum(a.*cross(b,c))) вычислите значение соответствующего объема. «Внешним» произведением векторов с длинами N и M является матрица размера M N, где вычисление элементов проводится по правилам матричного умножения, для чего служит команда >> c=a*b «Звездочка» служит оператором матричного умножения, а «апостроф» транспонирует матрицу b. Задание: проделайте самостоятельно соответствующие упражнения с векторами a и b различной длины.,

7 Используйте далее команду whos для просмотра переменных рабочей среды. Двумерные массивы. Матрицы. Ввод матриц. Простейшие операции. Матрицу A можно рассматривать как вектор-строку из трех элементов, каждый из которых является вектор-столбцом длиной два, либо как вектор-столбец из двух элементов, каждый из которых суть вектор-строка длиной три. Следовательно, для ее введения можно использовать де команды >> A=[[;] [;] [-;]] >> A=[ -; ] Другой способ набора состоит в следующем. Начните набирать в командной строке (используя для перехода к следующей строке клавишу «Enter»), >> B=[ 7 — ] нажав после замыкающей квадратной скобки клавишу «Enter», вы получите результат: B 7 Сложение и вычитание матриц происходит поэлементно с использованием обычных алгебраических команд, поэтому нужно следить за совпадением размерностей матриц. Наберите сначала матрицу С такой же размерности, что и матрица А, и сложите их, проверив полученный результат.

Читайте так же:
Php get property

8 6 >> C=[[;] [-;] [7;]]; >> S=A+C Для умножения матриц предназначена «звездочка» >> P=C*B P = Умножать матрицу на число можно также, используя «звездочку». >> P=A* (или P=*A) Транспонирование матрицы, как и вектора, производится при помощи команды. символ означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам. >> B’ ans = >> B.’ ans = Сопряжение и транспонирование матриц, содержащих комплексные числа, приведут к созданию разных матриц. >> K=[-i,+i;-i,-9i]

9 K =. -.i. +.i. -.i. — 9.i >> K’ ans =. +.i. +.i. -.i. + 9.i >> K.’ ans =. -.i. -.i. +.i. — 9.i Возведение квадратной матрицы в целую степень производится при помощи оператора ^. >> B=B^ B = Задание: найдите значение следующего выражения A C B A C T где верхний индекс Т означает транспонирование. Поскольку вектор-столбец или вектор-строка в MATLAB являются матрицами, у которых один из размеров равен единице, то вышеописанные операции применимы и к перемножению матриц с векторами. Задание: вычислите выражение, 7

10 Решение систем линейных алгебраических уравнений При помощи алгебраических операций с матрицей и вектор-столбцом в MATLAB можно решать системы линейных алгебраических уравнений. Решим систему с тремя неизвестными.x.x.x.; x.x.x..9; ().9x.7x.6x.. Задание: введите матрицу коэффициентов системы () в массив А, для вектора коэффициентов правой части системы используйте массив b. Решите систему при помощи символа 8 >> x=ab Проверьте правильность результата, умножив А на x. Считывание и запись данных Часто требуется найти решение системы, состоящей из большого числа линейных уравнений, причем матрица и вектор коэффициентов системы хранятся в файлах. Перед нами стоит задача решить систему, матрица и правая часть которой хранятся в текстовых файлах matr.txt, rside.txt, и записать результат в файл sol.txt. Матрица записана в файле построчно, элементы в строке отделены пробелом, вектор правой части записан в столбик. Задание: подготовьте файлы с данными системы () в стандартной программе Windows Блокнот (NotePad). Скопируйте файлы matr.txt, rside.txt в подкаталог work основного каталога MATLAB. Для считывания из файла используйте команду load,

11 для записи save. Формат вызова этих команд с выходными аргументами: >>A=load( matr.txt ); >>b=load( rside.txt ); >>x=ab; >>save sol.txt x ascii Параметр ascii означает запись в текстовом формате. После выполнения этих команд в каталоге work создается файл sol.txt, в котором в столбик записано решение системы. Посмотреть содержимое файла можно, используя любой текстовый редактор. Запись с двоичной точностью требует команды save sol.txt x ascii double. Аналогично можно записать и содержимое массива матрицы А в текстовый файл. Командой >> save sol.txt A ascii массив матрицы A записывается в файл matra.txt. Блочные матрицы. Часто в приложениях возникают матрицы, составленные из непересекающихся блочных матриц. Соответствующие размеры блоков должны совпадать. Введите матрицы A B C D и создайте из них блочную матрицу K A C B D >> A=[- ;- ]; >> B=[ ; ]; >> C=[ -;- ]; 9

12 >> D=[8 9; ]; >> K=[A B;C D] K = Составьте блочную матрицу где a S K, b. S a b Заполнение матриц при помощи индексации и создание матриц специального вида Сгенерируем матрицу Генерация матрицы осуществляется в три этапа. T. Создание массива Т размером пять на пять, состоящего из нулей.. Заполнение первой строки единицами.. Заполнение части последней строки минус единицами до последнего элемента..

13 Доступ к элементам матриц осуществляется при помощи аргумента, состоящего из двух индексов номеров строки и столбца. Например, >>A(,) вызывает элемент матрицы А, стоящий во второй строке и третьем столбце. Поэтому команды для генерации матрицы Т будут иметь вид >> A(. )= A = >> A(,:)= A = >> A(end,:end)=- A =

14 — — — Создание некоторых специальных матриц в осуществляется при помощи встроенных функций. MATLAB Заполнение прямоугольной матрицы нулями проводится обращением к встроенной функции zeros, аргументами которой является число строк и столбцов матрицы. >> A=zeros(,6) A = >> A=zeros() A = Единичная матрица генерируется функцией eye. Примеры: >> I=eye() I = >> I=eye(,8) I =

15 Матрица, состоящая из одних единиц, вызывается функцией ones: >> E=ones(,) E = Функция rand вызывает матрицу, заполненную случайным образом числами от нуля до единицы, функция randn создает матрицу чисел, распределенных по нормальному закону. >> R=rand(,) R = >> RN=randn(8) RN =

16 Функция diag формирует диагональную матрицу из векторстолбца или вектор-строки, располагая их элементы по диагонали. Для заполнения не главной, а побочной диагонали предусмотрена возможность вызова этой функции с двумя аргументами. Примеры: >> d=[ ]; >> D=diag(d) D = >> d=[;]; >> D=diag(d,) D = >> D=diag(d,-)

17 D = Подумайте, почему в двух последних случаях не указывается размер матрицы? Функция diag служит и для выделения диагонали матрицы в вектор, например >> A=[ ; ; 7]; >> d=diag(a) d = 7 Задание: заполните и запишите в файлы следующие матрицы.. G M

18 ..6. Поэлементные операции с матрицами Поэлементные операции с матрицами проводятся обычным образом, т.е. с использованием «точки» перед соответствующим оператором. Например, умножение первой матрицы на вторую (разумеется, того же размера!) производится оператором.*, деление элементов первой матрицы на соответствующие элементы второй производится с помощью оператора./, наоборот, деление элементов второй матрицы на элементы первой проводится оператором.. Введите две матрицы A 9 B 7 8. Проделайте с ними операции: >>C=A.*B >>R=A./B >>R=A.B >>P=A.^ >>PB=A.^B () Выведите последний результат в «длинном» формате, используя команду format long >> format long >>PB Обратите внимание, что повторного вычисления матрицы PB не потребовалось, так как все вычисления всегда ведутся с двойной точностью.. Контрольные вопросы.. Объясните, почему в отличие от операций сложения и вычитания можно и нужно перемножать матрицы разной 6

19 размерности. Какие параметры размерностей перемножаемых матриц должны совпадать, чтобы избежать ошибки. Объясните, почему операцию «возведение в степень» можно проводить только с квадратными матрицами и целыми степенями. Что сделал MATLAB в примере ()?. Список литературы ) Дьяконов В.П. MATLAB 6/6./6. + Simulink /. Основы применения. Полное руководство пользователя, / В.П. Дьяконов. М.: СОЛОН-Пресс,. 768с. ) Мэтьюз Д. Г. Численные методы. Использование MATLAB: [пер. с англ.], / Д. Г. Мэтьюз, К. Д. Финк. М.: Изд. дом «Вильямс»,. 7с. ) Теория аналитических функций. Аспекты приложений, / Л.В. Широков и др. Арзамас, АГПИ, 7. 87с. ) Свешников А.Г. Теория функций комплексного переменного, / А.Г. Свешников, А.Н., Тихонов М.: Наука, 979. ) Бейтмен Г. Высшие трансцендентные функции. Т., / Г. Бейтмен, А. Эрдейи. M.: Наука,

MATLAB Language Матрицы индексирования и массивы

пример

MATLAB позволяет несколько методов индексировать (получать доступ) элементы матриц и массивов:

  • Индексация индексов — где вы указываете позицию элементов, которые вы хотите в каждом измерении матрицы, отдельно.
  • Линейное индексирование — где матрица рассматривается как вектор, независимо от ее размеров. Это означает, что вы указываете каждую позицию в матрице с одним номером.
  • Логическая индексация — где вы используете логическую матрицу (и матрицу true и false значений) с одинаковыми размерами матрицы, которую вы пытаетесь индексировать в качестве маски, чтобы указать, какое значение нужно вернуть.
Читайте так же:
Delphi format date

Эти три метода теперь описано более подробно с помощью следующего 3 на 3 матрицы M в качестве примера:

Индексация индексов

Самый простой способ доступа к элементу — указать его индекс столбца строки. Например, доступ к элементу во второй строке и третьем столбце:

Количество предоставленных индексов точно соответствует числу размеров M (два в этом примере).

Обратите внимание, что порядок индексов совпадает с порядком математического соглашения: индекс строки является первым. Более того, индексы MATLAB начинаются с 1 а не 0 как большинство языков программирования.

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

В MATLAB вектор [1,2,3] легче создать с помощью оператора двоеточия, т. Е. 1:3 . Вы можете использовать это и в индексировании. Чтобы выбрать целую строку (или столбец), MATLAB предоставляет ярлык, позволяя вам просто указать : Например, следующий код также вернет всю вторую строку

MATLAB также предоставляет ярлык для указания последнего элемента измерения в форме ключевого слова end . Ключевое слово end будет работать точно так же, как если бы это был номер последнего элемента в этом измерении. Поэтому, если вы хотите, чтобы все столбцы от столбца 2 до последнего столбца, вы можете использовать следующее:

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

Например, индексирование индексов не может извлекать только элементы M(2,1) или M(3,3) . Для этого мы должны рассмотреть линейную индексацию.

Линейная индексация

MATLAB позволяет обрабатывать n-мерные массивы как одномерные массивы при индексировании с использованием только одного измерения. Вы можете напрямую получить доступ к первому элементу:

Обратите внимание, что массивы хранятся в основном порядке в MATLAB, что означает, что вы получаете доступ к элементам, сначала спустившись по столбцам. Таким образом, M(2) является вторым элементом первого столбца, который равен 3 а M(4) будет первым элементом второго столбца, т.е.

Существуют встроенные функции в MATLAB для преобразования индексов индексов в линейные индексы и наоборот: sub2ind и ind2sub соответственно. Вы можете вручную преобразовать индексы ( r , c ) в линейный индекс на

Чтобы понять это, если мы находимся в первом столбце, линейный индекс будет просто индексом строки. Вышеприведенная формула верна для этого, поскольку для c == 1 , (c-1) == 0 . В следующих столбцах линейный индекс — это номер строки и все строки предыдущих столбцов.

Обратите внимание, что ключевое слово end прежнему применяется и теперь относится к самому последнему элементу массива, т.е. M(end) == M(end, end) == 2 .

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

M(2:4) возвращает вектор строки, потому что 2:4 представляет вектор строки [2,3,4] :

В качестве другого примера M([1,2;3,4]) возвращает матрицу 2 на 2, потому что [1,2;3,4] является матрицей 2 на 2. Посмотрите приведенный ниже код, чтобы убедить себя:

Обратите внимание, что индексирование с помощью : alone всегда будет возвращать вектор-столбец:

Этот пример также иллюстрирует порядок, в котором MATLAB возвращает элементы при использовании линейной индексации.

Логическая индексация

Третий метод индексирования — использовать логическую матрицу, т. Е. Матрицу, содержащую только true или false значения, в качестве маски для фильтрации элементов, которые вы не хотите. Например, если мы хотим найти все элементы M , которые больше 5 мы можем использовать логическую матрицу

для индекса M и возвращать только значения, превышающие 5 следующим образом:

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

Мы можем уменьшить сложные кодовые блоки, содержащие операторы if и for , используя логическую индексацию.

Возьмите не-векторизованный (уже сокращенный до одного цикла с помощью линейной индексации):

Это можно сократить до следующего кода, используя логическую индексацию:

Или даже короче:

Подробнее об индексировании

Более высокие размерные матрицы

Все упомянутые выше методы обобщаются на n-мерные. Если мы используем в качестве примера трехмерную матрицу M3 = rand(3,3,3) , то вы можете получить доступ ко всем строкам и столбцам второго среза третьего измерения, написав

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

Фактически, в MATLAB каждая матрица n-мерна: просто случается так, что размер большинства других n-измерений один. Итак, если a = 2 то a(1) == 2 (как и следовало ожидать), но также a(1, 1) == 2 , как и a(1, 1, 1) == 2 , a(1, 1, 1, . 1) == 2 и т. Д. Эти «дополнительные» размеры (размером 1 ) называются одноэлементными размерами . squeeze команды удалит их, и можно использовать permute чтобы поменять порядок размеров вокруг (и при необходимости ввести размеры синглтона).

N-мерную матрицу можно также индексировать, используя m индексов (где m M(1,1) и M(2,3) но также вернет M(1,3) и M(2,1) . Это может показаться неинтуитивными , когда вы ищете элементы для списка пар координат , но рассмотрим пример большей матрицы A = rand(20) (заметим , теперь A 20 матрицу с размерностью 20 ), где вы хотите получить верхний правый квадрант. В этом случае вместо того, чтобы указывать каждую пару координат в этом квадранте (и этот случай равен 100 парам), вы просто указываете 10 строк и 10 столбцов, которые вы хотите, так что A(1:10, 11:end) . Нарезка такой матрицы гораздо более распространена, чем запрос списка пар координат.

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

Поэтому в этом случае вы действительно хотите вернуть элементы в (1,3) , (2,2) и (3,1) . Таким образом, используя линейное индексирование:

Возвращение элемента несколько раз

С индексом и линейной индексацией вы также можете вернуть элемент несколько раз, повторяя его индекс так

Вы можете использовать это, чтобы дублировать целые строки и столбец, например, чтобы повторить первую строку и последний столбец

Для получения дополнительной информации см. Здесь .

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector