Converting matirx into vektor inside a cell array

조회 수: 1 (최근 30일)
Antonio Sarusic
Antonio Sarusic 2020년 2월 20일
댓글: Antonio Sarusic 2020년 2월 20일
Hello,
I have a cell array V (1024x1280 cells).
In every cell of this cell array I saved a 2x2 matrix.
Now i want to split this matrix into two column vectors and save these vectors in two cell arrays ev1 and ev2.
And all this for the entire cell array V.
I had the following idea:
for i=1:n
for j=1:m
[ev1{j,i}] = V{j,i}(1,1);
[ev2{j,i}] = V{j,i}(1,2);
end
end
But with this I only get single values.
Thanks,
Antonio

채택된 답변

Alex Mcaulley
Alex Mcaulley 2020년 2월 20일
Try with this:
for i=1:n
for j=1:m
ev1{j,i} = V{j,i}(:,1);
ev2{j,i} = V{j,i}(:,2);
end
end

추가 답변 (1개)

the cyclist
the cyclist 2020년 2월 20일
ev1 = cellfun(@(x)x(:,1),V,'UniformOutput',false);
ev2 = cellfun(@(x)x(:,2),V,'UniformOutput',false);
  댓글 수: 6
the cyclist
the cyclist 2020년 2월 20일
I will say this, though. It looks like you could use 4-dimensional arrays instead of cell arrays.
V = zeros(m,n,2,2);
D = zeros(m,n,2,2);
for i=1:n
for j=1:m
HesseM = [Gxx(j,i) Gxy(j,i); Gyx(j,i) Gyy(j,i)];
[V(j,i,:,:),D(j,i,:,:)] = eig(HesseM);
end
end
Then the next operation is ...
ev1 = V(:,:,:,1);
ev2 = V(:,:,:,2);
and other downstream operations might also be easier, and probably execute faster.
Antonio Sarusic
Antonio Sarusic 2020년 2월 20일
Ok. I'll give it a try.
Thank you!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by