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 件のコメント
Antonio Sarusic
Antonio Sarusic 2020 年 2 月 20 日
Thanks, this is working!

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by