Разделите матрицу на маленькие матрицы с равным количеством столбцов, используя цикл for в Matlab? - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть матрица с размером 1 * 92609.Я хочу зациклить матрицу и взять 8 значений за раз, чтобы выполнить поэлементное умножение с другой 8-битной матрицей размера.Либо я хочу разделить матрицу так, чтобы на первой итерации были взяты только первые элементы 1: 8, а на второй итерации - 8:16 элементов и т. Д.

Как я могу добиться этого в Matlab, используя цикл «для».Вот снимок экрана матрицы.enter image description here

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Если ваша матрица MTX, вы можете сделать что-то вроде

N = numel(MTX)
for k = 1:8:N
   subMtx = MTX(k:min(k+7,N));
   do your processing with subMtx
end

Выражение 1:8:N дает последовательность 1, 9, 17, ....min(k+7,N) необходимо, потому что размер матрицы (92609) не делится на 8. Помните, что последняя подматрица имеет только один элемент.

HTH

0 голосов
/ 29 сентября 2019

x - ваш исходный массив, и вы хотите взять среднее значение для каждых 8 элементов

n = floor( length(x)/8 );       % how many series of 8 elements in x
y = zeros( 1,n );               % preallocate
k = 0;                          % counter for y array
for i = 1:8:length(x)-1
    k = k + 1;
    y(k) = mean( x(i:i+7) );    % take mean of each 8 elements
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...