У меня есть массив в MatlabСохранение блоков векторных данных в массив в Matlab
A = [1 2 3 4 5 6 7 8 9;
67 67 67 86 86 86 86 67 67]';
, где каждая точка в первой строке A соответствует «коду» либо 67
или 86
. Я пытаюсь извлечь эти блоки из "67s"
и "86s"
, так что каждый раз, когда начинается блок, соответствующие элементы помещаются в 3-мерное измерение другого массива, называемого X, где.
Так, например, в A У меня есть 3 разных блока, поэтому я хотел бы получить массив X размером 1x9x3. И, например, первый блок 67
Я хотел бы иметь X
X(1,:,1) = [1 2 3];
Я понимаю, что я «завалить» этот вектор X, используя для цикла
for i=1:size(A,2)
for j=1:size(A,2) %actually j should be up till the number of blocks present
X(1,i,j) = A(1,i)
end
end
Но это не правильно или полностью, конечно, потому что, во-первых, я не уверен, как выделить «блоки» и как правильно «заполнить» j в X (1, i, j). Во-вторых, как я могу получить код для распознавания количества блоков?
Может ли кто-нибудь помочь?
Благодаря
Вы уверены, что ваш пример данные правильно? Поскольку у вас есть это, у вас есть 4 записи для '86'. – Suever
@Suever да, блоки не равного размера! –
В вашем примере, если 'X' является' 1x9x3', то 'X (1,:, 1)' должен быть массивом с 9 элементами, поэтому он не может содержать '[1 2 3]'. Предлагаю вам ознакомиться с вашим примером. –