% Создаем матрицу с копированием свойств существующей
v = [2 3 1 5];
rn = rand(size(v),'like',v);
% Генерируем целые числа в диапазоне
a = 2;
b = 8;
n = 10;
rn = round(a + (b-a).*rand(n,1));
В MATLAB существует несколько способов генерации матрицы в заданном диапазоне:
%%Матрица 3x3 с числами от 1 до 100:
matrix = 1 + 99.*rand(3, 3);
%%Матрица 4x4 с целыми числами от -10 до 10:
matrix = -10 + 20.*randi([0 1], 4, 4);
%%Матрица 5x5 с нормальным распределением от 0 до 10:
matrix = 0 + 10.*randn(5, 5);
matrix = max(min(matrix, 10), 0);
%%матрица 7x7 с числами от -1 до 1:
Равномерное распределение: (для большинства задач подойдет)
matrix = -1 + 2.*rand(7, 7);
%%Нормальное распределение: (нормальное распределение с возможными выбросами)
matrix = 0 + 1.*randn(7, 7);
matrix = max(min(matrix, 1), -1);
%% Целые числа (-1, 0, 1): (только целые значения)
matrix = -1 + 2.*randi(0 1, 7, 7);
%% С использованием truncate (для MATLAB 2019a и выше/метод гарантирует нормальное распределение без выбросов):
pd = makedist('Normal', 'mu', 0, 'sigma', 1);
truncatedPd = truncate(pd, -1, 1);
matrix = random(truncatedPd, 7, 7);
способы определить знак каждого элемента массива
способы сложения значений матриц по компонентам
(кумулятивные суммы)
Варианты визуализации
Для больших матриц лучше использовать imagesc или contourf
При небольшом количестве столбцов удобен stacked bar chart
Для анализа - линейный график
colorbar поможет интерпретировать цветовые шкалы
original_matrix = randi([-1, 1], 7, 7); % матрица 7х7
cumulative_sums = cumsum(original_matrix, 1);
Дисперсия
где: an - отклонение на шаге (1 / -1; p /1-p; 0.5/0.5)
для усреднения умножим Sn само на себя
где:
с учетом результатов суммы получатся:
средний квадрат отклонения (дисперсия)
среднеквадратичное отклонение
Поиск минимальных/максимальных значений
для матрицы кумулятивных сумм
y=cumsum(siqnum);
определить минимальное(максимальное) значение и получить его индекс
[P1,I1]=min(y);