Выше были рассмотрены операции с простыми переменными. Однако с их помощью сложно описывать сложные данные, такие как случайный сигнал, поступающий на вход фильтра или хранить кадр изображения и т.п. Поэтому в языках высокого уровня предусмотрена возможность хранить значения в виде массивов. В MatLab эту роль выполняют векторы и матрицы.
Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:
a = [1 2 3 4]; % вектор-строка
Для доступа к тому или иному элементу вектора используется следующая конструкция языка:
disp( a(1) ); % отображение значения 1-го элемента вектора
disp( a(2) ); % отображение значения 2-го элемента вектора
disp( a(3) ); % отображение значения 3-го элемента вектора
disp( a(4) ); % отображение значения 4-го элемента вектора
т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать
a(2) = 10; % изменение значения 2-го элемента на 10
Часто возникает необходимость определения общего числа элементов в векторе, т.е. определения его размера. Это можно сделать, воспользовавшись функцией length() следующим образом:
N = length(a); % (N=4) число элементов массива а
Если требуется задать вектор-столбец, то это можно сделать так
a = [1; 2; 3; 4]; % вектор-столбец
b = [1 2 3 4]’; % вектор-столбец
при этом доступ к элементам векторов осуществляется также как и для векторов-строк.
Следует отметить, что векторы можно составлять не только из отдельных чисел или переменных, но и из векторов. Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого:
a = [1 2 3 4]; % начальный вектор a = [1 2 3 4]
b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6]
Здесь вектор b состоит из шести элементов и создан на основе вектора а. Используя этот прием, можно осуществлять увеличение размера векторов в процессе работы программы:
a = [a 5]; % увеличение вектора а на один элемент
Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:
a1 = zeros(1, 100); % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1); % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000); % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со
% случайными значениями
Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:
E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3
E = [1 0 0
0 1 0
0 0 1]; % единичная матрица 3х3
Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:
A1 = zeros(10,10); % нулевая матрица 10х10 элементов
A2 = zeros(10); % нулевая матрица 10х10 элементов
A3 = ones(5); % матрица 5х5, состоящая из единиц
A4 = rand(100); % матрица 100х100, из случайных чисел
Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:
A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) ); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp( A(1,2) ); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2
Также возможны операции выделения указанной части матрицы, например:
B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.
Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:
a = 5; % переменная а
A = [1 2 3]; % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3
© 2022 Научная библиотека
Копирование информации со страницы разрешается только с указанием ссылки на данный сайт
- MATLAB создает случайную матрицу
- Сгенерируйте случайные числа, используя функцию rand() в MATLAB
- Сгенерируйте случайные числа, используя функцию randi() в MATLAB
- Сгенерируйте случайные числа, используя функцию randn() в MATLAB
- Сгенерируйте случайные числа, используя функцию randperm() в MATLAB
- Сгенерируйте случайные числа с помощью функции betarnd() в MATLAB
- Сгенерируйте случайные числа, используя функцию random() в MATLAB
- Как задать случайный вектор в матлабе
- Syntax
- Description
- Examples
- Matrix of Random Numbers
- Random Numbers Within Specified Interval
- Random Integers
- Random Complex Numbers
- Reset Random Number Generator
- 3-D Array of Random Numbers
- Specify Data Type of Random Numbers
- Clone Size from Existing Array
- Clone Size and Data Type from Existing Array
- Clone Distributed Array
- Input Arguments
- n — Size of square matrix integer value
- sz1. szN — Size of each dimension (as separate arguments) integer values
- sz — Size of each dimension (as a row vector) integer values
- typename — Data type (class) to create ‘double’ (default) | ‘single’
- p — Prototype of array to create numeric array
- s — Random number stream RandStream object
- Extended Capabilities
- C/C++ Code Generation Generate C and C++ code using MATLAB® Coder™.
- Thread-Based Environment Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool .
- GPU Arrays Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
- Distributed Arrays Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
- See Also
- Topics
- Open Example
- 💡 Видео
Видео:Работа с массивами. Вектор столбцы и вектор строки 1. Урок 7Скачать
MATLAB создает случайную матрицу
В этом руководстве будет обсуждаться, как сгенерировать или создать случайные числа с помощью функций rand() , randi() , randn() , randperm() , betarand() и random() . в MATLAB.
Видео:MATLAB 04 Массивы и матрицыСкачать
Сгенерируйте случайные числа, используя функцию rand() в MATLAB
Если вы хотите сгенерировать равномерно распределенные случайные числа, вы можете использовать функцию rand() в MATLAB, которая генерирует случайные числа от 0 до 1. Вы также можете указать размер матрицы, содержащей случайные значения, и каждое значение будет от 0 до 1, которые вы можете масштабировать в соответствии с вашими требованиями, умножая их с помощью масштабатора. Например, сгенерируем матрицу случайных значений 2 на 2 с помощью функции rand() . См. Код ниже.
Как видно из выходных данных, создается матрица 2 на 2, содержащая случайные значения от 0 до 1. Если вы хотите указать диапазон случайных чисел, вы должны использовать приведенную ниже формулу.
В этой формуле a — это нижний предел, b — верхний предел, а n — длина случайных чисел. Например, давайте сгенерируем десять случайных чисел в диапазоне от 2 до 8. См. Код ниже.
Есть десять случайных чисел в диапазоне от 2 до 8. Если вам нужны только целые числа на выходе, вы можете преобразовать эти случайные числа в целые, используя функцию round() , которая округляет число с плавающей запятой до ближайшего целого. . Вы также можете клонировать размер и тип данных случайных чисел из существующего массива, используя функцию size() для размера и свойство like для типа данных. Например, давайте создадим массив и сгенерируем случайные значения в соответствии с размером и типом данных этого массива. См. Код ниже.
Размер и тип данных массива и случайных чисел совпадают. Проверьте эту ссылку, чтобы узнать больше о функции rand() .
Видео:Гистограмма распределения в МатлабСкачать
Сгенерируйте случайные числа, используя функцию randi() в MATLAB
Вышеупомянутая функция генерирует случайные числа с плавающей запятой, но если вы хотите сгенерировать случайные целые числа, вы можете использовать функцию randi() в MATLAB, которая генерирует случайные целые числа от 1 до заданного целого числа, которое вы можете указать как первый аргумент в функции randi() . Вы также можете указать размер выходной матрицы, содержащей случайные значения, в качестве второго и третьего аргумента. Например, давайте сгенерируем матрицу 3 на 3, содержащую случайные целые числа от 1 до 15. См. Код ниже.
Матрица имеет размер 3 на 3 и содержит случайные целые числа от 1 до 15. Вы также можете генерировать случайные целые числа между определенным диапазоном, и вам просто нужно передать диапазон в квадратных скобках в качестве первого аргумента randi() функция. Например, давайте сгенерируем 10 случайных чисел от -10 до 10. См. Код ниже.
Существует десять случайных чисел в диапазоне от -10 до 10. Вы также можете определить тип данных целых чисел, передав имя типа данных в функции randi() . Вы можете выбрать следующие типы данных: ‘single’ , ‘double’ , ‘int8’ , ‘uint8’ , ‘int16’ , ‘uint16’ , ‘int32’ . , или ‘uint32’ . Вы можете определить размер случайных чисел из размера существующего массива с помощью функции size() и числового типа данных с помощью свойства like . Например, давайте сгенерируем матрицу случайных значений в зависимости от размера и числового типа данных существующего массива. См. Код ниже.
Размер и тип данных массива и случайных чисел совпадают. Проверьте эту ссылку, чтобы узнать больше о функции randi() .
Видео:Решение задачи расписания в MATLABСкачать
Сгенерируйте случайные числа, используя функцию randn() в MATLAB
Если вы хотите сгенерировать нормально распределенные случайные числа, вы можете использовать функцию randn() в MATLAB. Функция randn() аналогична функции rand() , но отличается только типом распределения. Функция rand() генерирует равномерно распределенные случайные числа, а функция randn() генерирует нормально распределенные случайные числа. Вы можете использовать любую из этих функций в зависимости от ваших требований. Проверьте эту ссылку, чтобы узнать больше о функции randn .
Видео:Основы ЦОС: 12. Шум как случайный процесс (ссылка на скачивание скрипта в описании)Скачать
Сгенерируйте случайные числа, используя функцию randperm() в MATLAB
Если вы хотите сгенерировать случайную перестановку целых чисел, вы можете использовать функцию randperm() в MATLAB. Случайная перестановка целых чисел будет от 1 до определенного числа, которое вы можете определить в функции randperm() в качестве первого аргумента. Вы также можете определить количество целых чисел, которые хотите сгенерировать, в качестве второго аргумента функции. Например, давайте сгенерируем случайную перестановку 6 уникальных целых чисел. См. Код ниже.
Все целые числа уникальны и находятся в диапазоне от 1 до 10. Обратите внимание, что функция randperm() аналогична функции randi() с той разницей, что randperm() генерирует уникальные целые числа, тогда как в randperm() randi() целые числа могут повторяться. Проверьте эту ссылку, чтобы узнать больше о функции randperm .
Видео:MatLab. Урок 3. Функции и построение графиков.Скачать
Сгенерируйте случайные числа с помощью функции betarnd() в MATLAB
Если вы хотите сгенерировать случайные числа из бета-распределения, вы можете использовать функцию betarnd() в MATLAB. Эта функция генерирует случайные целые числа, заданные первым и вторым аргументом: векторы, матрицы или массивы одинакового размера. Например, давайте сгенерируем матрицу случайных чисел размером 1 на 5 из бета-распределения, используя в качестве входных данных два вектора. См. Код ниже.
Вы также можете указать размер выходной матрицы, задав его в третьем и четвертом аргументах функции betarnd() . Посетите эту ссылку, чтобы узнать больше о функции betarnd() .
Видео:rand. srand. rand задать диапазон. srand time null. Генератора случайных чисел. randomize. Урок #29.Скачать
Сгенерируйте случайные числа, используя функцию random() в MATLAB
Если вы хотите сгенерировать случайные числа из указанного типа распределения, вы можете использовать функцию random() в MATLAB. Вы должны определить имя распределения в качестве первого аргумента, а затем после этого вам необходимо передать параметры распределения. Например, давайте сгенерируем нормально распределенные случайные числа, используя значение сигмы 0 и значение mu 1, используя функцию random() . См. Код ниже.
Вы можете определить необходимое имя дистрибутива в функции. Вы можете использовать множество типов распределений, например: Бета , Биномиальное , Экспоненциальное , Гамма и многие другие. Посетите эту ссылку, чтобы узнать больше о функции random .
Видео:Функция распределения и плотность распределенияСкачать
Как задать случайный вектор в матлабе
Uniformly distributed random numbers
Видео:Урок 10 Собственные векторы и собственные значения матрицыСкачать
Syntax
Видео:2-4 MATLAB - Матрицы и индексацияСкачать
Description
X = rand returns a single uniformly distributed random number in the interval (0,1).
X = rand( n ) returns an n -by- n matrix of random numbers.
X = rand( sz1. szN ) returns an sz1 -by-. -by- szN array of random numbers where sz1. szN indicate the size of each dimension. For example, rand(3,4) returns a 3-by-4 matrix.
X = rand( sz ) returns an array of random numbers where size vector sz specifies size(X) . For example, rand([3 4]) returns a 3-by-4 matrix.
X = rand( ___ , typename ) returns an array of random numbers of data type typename . The typename input can be either ‘single’ or ‘double’ . You can use any of the input arguments in the previous syntaxes.
X = rand( ___ ,’like’, p ) returns an array of random numbers like p ; that is, of the same object type as p . You can specify either typename or ‘like’ , but not both.
X = rand( s , ___ ) generates numbers from random number stream s instead of the default global stream. To create a stream, use RandStream . Specify s followed by any of the argument combinations in previous syntaxes, except for the ones that involve ‘like’ . This syntax does not support the ‘like’ input.
Note
The ‘seed’ , ‘state’ , and ‘twister’ inputs to the rand function are not recommended. Use the rng function instead. For more information, see Replace Discouraged Syntaxes of rand and randn.
Видео:Урок 6. Структуры MATLABСкачать
Examples
Matrix of Random Numbers
Generate a 5-by-5 matrix of uniformly distributed random numbers between 0 and 1.
Random Numbers Within Specified Interval
Generate a 10-by-1 column vector of uniformly distributed numbers in the interval (-5,5).
In general, you can generate N random numbers in the interval (a,b) with the formula r = a + (b-a).*rand(N,1) .
Random Integers
Use the randi function (instead of rand ) to generate 5 random integers from the uniform distribution between 10 and 50.
Random Complex Numbers
Generate a single random complex number with real and imaginary parts in the interval (0,1).
Reset Random Number Generator
Save the current state of the random number generator and create a 1-by-5 vector of random numbers.
Restore the state of the random number generator to s , and then create a new 1-by-5 vector of random numbers. The values are the same as before.
Always use the rng function (rather than the rand or randn functions) to specify the settings of the random number generator. For more information, see Replace Discouraged Syntaxes of rand and randn.
3-D Array of Random Numbers
Create a 3-by-2-by-3 array of random numbers.
Specify Data Type of Random Numbers
Create a 1-by-4 vector of random numbers whose elements are single precision.
Clone Size from Existing Array
Create a matrix of random numbers with the same size as an existing array.
It is a common pattern to combine the previous two lines of code into a single line:
Clone Size and Data Type from Existing Array
Create a 2-by-2 matrix of single precision random numbers.
Create an array of random numbers that is the same size and data type as p .
Clone Distributed Array
If you have Parallel Computing Toolbox™, create a 1000-by-1000 distributed array of random numbers with underlying data type single . For the distributed data type, the ‘like’ syntax clones the underlying data type in addition to the primary data type.
Create an array of random numbers that is the same size, primary data type, and underlying data type as p .
Видео:Инструменты LDRA для верификации ПО: Создание тестовых векторов в MATLABСкачать
Input Arguments
n — Size of square matrix
integer value
Size of square matrix, specified as an integer value.
If n is 0 , then X is an empty matrix.
If n is negative, then it is treated as 0 .
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
sz1. szN — Size of each dimension (as separate arguments)
integer values
Size of each dimension, specified as separate arguments of integer values.
If the size of any dimension is 0 , then X is an empty array.
If the size of any dimension is negative, then it is treated as 0 .
Beyond the second dimension, rand ignores trailing dimensions with a size of 1. For example, rand(3,1,1,1) produces a 3-by-1 vector of random numbers.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
sz — Size of each dimension (as a row vector)
integer values
Size of each dimension, specified as a row vector of integer values. Each element of this vector indicates the size of the corresponding dimension:
If the size of any dimension is 0 , then X is an empty array.
If the size of any dimension is negative, then it is treated as 0 .
Beyond the second dimension, rand ignores trailing dimensions with a size of 1. For example, rand([3 1 1 1]) produces a 3-by-1 vector of random numbers.
Example: sz = [2 3 4] creates a 2-by-3-by-4 array.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
typename — Data type (class) to create
‘double’ (default) | ‘single’
Data type (class) to create, specified as ‘double’ , ‘single’ , or the name of another class that provides rand support.
Example: rand(5,’single’)
p — Prototype of array to create
numeric array
Prototype of array to create, specified as a numeric array.
Example: rand(5,’like’,p)
Data Types: single | double
Complex Number Support: Yes
s — Random number stream
RandStream object
Random number stream, specified as a RandStream object.
Example: s = RandStream(‘dsfmt19937’); rand(s,[3 1])
The sequence of numbers produced by rand is determined by the internal settings of the uniform pseudorandom number generator that underlies rand , randi , and randn . You can control that shared random number generator using rng .
Видео:Нахождение функции распределения для двумерного случайного вектора по плотностиСкачать
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
The data type (class) must be a built-in MATLAB ® numeric type. For other classes, the static rand method is not invoked. For example, rand(sz,’myclass’) does not invoke myclass.rand(sz) .
Size arguments must have a fixed size.
If extrinsic calls are enabled and rand is not called from inside a parfor loop, generated MEX files use the same random number state as MATLAB in serial code. Otherwise, the generated MEX code and standalone code maintain their own random number state that is initialized to the same state as MATLAB.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool .
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
The stream syntax rand( s ,___) is not supported on a GPU.
You can specify typename as ‘gpuArray’ . If you specify typename as ‘gpuArray’ , the default underlying type of the array is double .
To create a GPU array with underlying type datatype , specify the underlying type as an additional argument before typename . For example, X = rand(3,datatype,’gpuArray’) creates a 3-by-3 GPU array of random numbers with underlying type datatype .
You can specify the underlying type datatype as one of these options:
You can also specify the numeric variable p as a gpuArray .
If you specify p as a gpuArray , the underlying type of the returned array is the same as p .
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox) .
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
Usage notes and limitations:
The stream syntax rand( s ,___) is not supported for codistributed or distributed arrays.
You can specify typename as ‘codistributed’ or ‘distributed’ . If you specify typename as ‘codistributed’ or ‘distributed’ , the default underlying type of the returned array is double .
To create a distributed or codistributed array with underlying type datatype , specify the underlying type as an additional argument before typename . For example, X = rand(3,datatype,’distributed’) creates a 3-by-3 distributed matrix of random numbers with underlying type datatype .
You can specify the underlying type datatype as one of these options:
You can also specify p as a codistributed or distributed array.
If you specify p as a codistributed or distributed array, the underlying type of the returned array is the same as p .
For additional codistributed syntaxes, see rand (codistributed) (Parallel Computing Toolbox) .
For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) .
Видео:Моделирование непрерывных случайных величинСкачать
See Also
Topics
Видео:Сплайны и интерполяция данных в MATLABСкачать
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
💡 Видео
MatLab. Урок 1. Основы программирования.Скачать
Теория вероятностей #12: случайная величина, плотность и функция распределенияСкачать
MATLAB 03 Написание программСкачать
ТАУ. Matlab/Simulink - моделирование передаточной функции, снятие характеристикСкачать
Семинар по ЦОС: АвтокорреляцияСкачать