Создание матриц с заданными свойствами
Создание единичной матрицы
Для создания единичной матрицы (она обычно обозначается как Е) служит функция eye:
· еуе(n) — возвращает единичную матрицу размера nrn;
· eye(m.n) или еуе([m n]) — возвращают матрицу размера mn с единицами по диагонали и нулями в остальных ячейках;
· eye(size(A)) — возвращает единичную матрицу того же размера, что и А.
Единичная матрица не определена для многомерных массивов. Так, функция у = eye([2,3,4]) при попытке ее вычисления приведет к ошибке.
Пример использования функции eye:
Создание матрицы с единичными элементами
Для создания матриц, все элементы которых — единицы, используется функция ones:
· ones(n) — возвращает матрицу размера nхn, все элементы которой — единицы. Если п — не скаляр, то появится сообщение об ошибке;
· ones(m.n) или ones([m п]) — возвращают матрицу размера mxn, состоящую из единиц;
· ones(dl.d2,d3....) или ones([dl1 d2 d3...]) — возвращает массив из единиц с размером d1xd2xd3x...;
· ones(size(A)) — возвращает массив единиц той же размерности и размера, что и А. Матрица с единичными элементами в отличие от единичной матрицы в MATLAB определена и для многомерных массивов.
Пример:
» s=ones(3,4)
s=
1 1 1 1
1 1 1 1
1 1 1 1
Создание матрицы с нулевыми элементами
Иногда нужны матрицы, все элементы которых — нули. Следующая функция обеспечивает создание таких матриц:
· zeros(п) — возвращает матрицу размера nхn, содержащую нули. Если n — не скаляр, то появится сообщение об ошибке;
· zeros(m.n) или zeros([m n]) — возвращают матрицу размера mxn, состоящую из нулей;
· zeros(d1.d2,d3,...) или zeros([d1.d2.d3...]) — возвращают массив из нулей размера d1xd2xd3x...;
· zeros(size(A)) — возвращает массив нулей того же размера и размерности, что и А.
Пример:
» D=zeros(3.2)
D=
0 0
0 0
0 0
Создание линейного массива равноотстоящих точек
Функция linspace формирует линейный массив равноотстоящих узлов. Это подобно оператору :, но дает прямой контроль над числом точек. Применяется в следующих формах:
· llnspace(a.b) — возвращает линейный массив из 100 точек, равномерно распределенных между а и b;
· linspace(a,b,n) — генерирует п точек, равномерно распределенных в интервале от а до b.
Пример:
» M-linspace(4.20.14)
М=
Columns I through 7
4.0000 5.2308 6.4615 7.6923 8.9231 10.153811.3846
Columns 8 through 14
12.615413.846215.076916.307717.538518.769220.0000
Создание массивов со случайными элементами
· р = randperm(n) — возвращает случайные перестановки целых чисел 1:n в векторе-строке. Пример:
» randperm(6)
ans =
Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1):
· rand(n) — возвращает матрицу размера nхn. Если n — не скаляр, то появится сообщение об ошибке;
· rand(m.n) или rand([m п]) — возвращают матрицу размера mxn;
· rand(m.n,p....) или rand([m n р...]) — возвращает многомерный массив;
· rand(size(A)) — возвращает массив того же размера и размерности, что и А, с элементами, распределенными по равномерному закону;
· rand (без аргументов) — возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет равномерный закон распределения;
· rand(' state') — возвращает вектор с 35 элементами, содержащий текущее состояние генератора случайных чисел с равномерным распределением. Для изменения состояния генератора можно применять следующие формы этой функции:
o rand('state' .s) — устанавливает состояние в s;
o rand( 'state' ,0) — сбрасывает генератор в начальное состояние;
o rand( 'state'. j) — для целых j, устанавливает генератор в j-е состояние;
o rand( 'state' ,sum(100*clock)) — каждый раз сбрасывает генератор в состояние, зависящее от времени.
Пример:
» Y=rand(4,3)
Y=
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
Проверить равномерность распределения случайных чисел можно, построив большое число точек на плоскости со случайными координатами. Это делается с помощью следующих команд:
» X=rand(1000,1);
» Y=rand(1000,1);
» plot(X,Y,'.')
Полученный при этом график показан на рис. 10.1. Нетрудно заметить, что точки довольно равномерно распределены на плоскости, так что нет оснований не доверять заданному закону распределения координат точек.
![](https://konspekta.net/stydopediaru/baza1/3690768179623.files/image055.gif)
Рис. 10.1.Случайные точки с равномерным распределением координат на плоскости
Функция randn генерирует массив со случайными элементами, распределенными по нормальному закону с нулевым математическим ожиданием и среднеквадратическим отклонением, равным 1:
· randn(n) — возвращает матрицу размера nхn. Если n — не скаляр, то появится сообщение об ошибке;
· randn(m.n) или randn([m n]) — возвращают матрицу размера mxn;
· randn(m,n,p,...) или randn([m n р...]) — возвращает массив с элементами, значения которых распределены по нормальному закону;
· randn(size(A)) — возвращает массив того же размера, что и А, с элементами, распределенными по нормальному закону;
· randn (без аргументов) — возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет нормальное распределение;
· randn( 'state') — возвращает двухэлементный вектор, включающий текущее состояние нормального генератора. Для изменения состояния генератора можно применять следующие формы этой функции:
o randn('state',s) — устанавливает состояние в s;
o randn('state' ,0) — сбрасывает генератор в начальное состояние;
o randn('state', j) — для целых j устанавливает генератор в J-e состояние;
o randn('state', sum( 100*clock)) — каждый раз сбрасывает генератор в состояние, зависящее от времени.
Пример:
>>Y=randn(4.3)
Y =
-0.4326 -1.1465 0.3273
-1.6656 1.1909 0.1746
0.1253 1.1892 -0.1867
0.2877 -0.0376 0.7258
Проверить распределение случайных чисел по нормальному закону можно, построив гистограмму распределения большого количества чисел. Например, следующие команды
» Y=randn(10000,1);
» hist(Y,100)
строят гистограмму (рис. 10.2) из 100 столбцов для 10 000 случайных чисел с нормальным распределением.
![](https://konspekta.net/stydopediaru/baza1/3690768179623.files/image056.gif)
![](https://konspekta.net/stydopediaru/baza1/3690768179623.files/image057.gif)
![](https://konspekta.net/stydopediaru/baza1/3690768179623.files/image058.gif)
Рис. 10.2.Гистограмма для 10 000 нормально распределенных чисел в 100 интервалах
Из рисунка видно, что огибающая гистограммы действительно близка к нормальному закону распределения.
В пакете расширения Statistics Toolbox можно найти множество статистических функций, в том числе для генерации случайных чисел с различными законами распределения и определения их статистических характеристик.
Конкатенация матриц
Конкатенацией называют объединение массивов, которое реализует следующая функция.
· С = cat (dim, А, В) — объединяет массивы А и В в соответствии со спецификацией размерности dim и возвращает объединенный массив; dim = 1 — горизонтальная конкатенация, dim = 2 — вертикальная, dim = 3 — многомерный массив размерности 3 и т. д.;
· С = cat(dim,Al,A2,A3,A4,...) объединяет все входные массивы (А1, А2, A3, А4 и т. д.) в соответствии со спецификацией размерности dim и возвращает объединенный массив;
· cat(2.A,B) — это то же самое, что и [А,В],асаt(,А,В) —то же самое, что и [А; В]. При записи cat (dim, С (:)) или cat (dim, С. field) эта функция применима к массивам ячеек или структур, содержащим численные матрицы. Пример:
» A =[2.4:3,5];B=[8,7;9.0];C=cat(1.A.B)
С =
2 4
3 5
8 7
9 0
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|