У меня есть большая матрица, из которой я хотел бы собрать коллекцию подматриц. Если моя матрица равна NxN, а размер подматрицы - MxM, я хочу собрать подматрицы I=(N - M + 1)^2
. Другими словами, мне нужна одна подматрица MxM для каждого элемента исходной матрицы, которая может находиться в верхнем левом углу такой матрицы.Октава: Несколько подматриц из матрицы
Вот код, у меня есть:
for y = 1:I
for x = 1:I
index = (y - 1) * I + x;
block_set(index) = big_mat(x:x+M-1, y:y+M-1)
endfor
endfor
выход, если а) не прав, и б) подразумевающее есть что-то в выражении big_mat(x:x+M-1, y:y+M-1)
, что может заставить меня, что я хочу, не нуждаясь в два для петель. Любая помощь была бы очень благодарна
Кажется, что вы делаете это в Octave, но, возможно, этот вопрос MATLAB поможет вам дать некоторые идеи: http://stackoverflow.com/questions/2678857/general-method-for-making-sub-arrays- вокруг-а-особенно-элемент. – gnovice