Separating array to individual rows

조회 수: 1 (최근 30일)
matico
matico 2015년 8월 12일
Hello.
I have an array called "Mat". In every row, there are 3 vectors with same length, one after another. From the last element of the third vector till the end of a row of "Mat", which has 5000 elements, there are "NaN" elements. There are 500 rows in a "Mat" for that combination. After that, the same is repeated two times more. Thus, the end size of a "Mat" is [1500,5000].
You can see how "Mat" is created in a code below. Values of each element here are just for example.
I would like to access to the first vector of each row. It goes from 1:16400, but with different number of elements (1000, 200 or 500). I made this with a for loop. It works, but I am interested, if the same could be achieved without any loop, just using vectorization.
You can better understand what I want, if you look to the code below.
%%Making a matrix Mat
A = [linspace(1,16400,1000) 4000*sin(1:1000) 3800*cos(1:1000)];
B = [linspace(1,16400,200) 4000*sin(1:200) 3800*cos(1:200)];
C = [linspace(1,16400,500) 4000*sin(1:500) 3800*cos(1:500)];
A = [A NaN(1,5000-length(A))];
B = [B NaN(1,5000-length(B))];
C = [C NaN(1,5000-length(C))];
Mat1 = repmat(A,[500 1]);
Mat2 = repmat(B,[500 1]);
Mat3 = repmat(C,[500 1]);
Mat = [Mat1; Mat2; Mat3];
Y = cell(size(Mat,1),1);
for i=1:size(Mat,1)
Y{i} = Mat(i,1:(min(find(isnan(Mat(i,:))))-1)/3);
end
k = Y{1};
p = Y{750};
n = Y{1200};

답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by