Separating array to individual rows
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!