Clear Filters
Clear Filters

How can i simultaneously reference in cells

1 view (last 30 days)
I have a cell array, lets say C. Each cell contains a matrix.
For example lets say C is
C{1}=[1 2;3 4;5 6]
C{2}=[7 8;9 10;11 12]
How can I create a new cell array D, whose i-th element is a matrix consisted by the i-th transposed rows of all matrices in C?
Then D must be
D{1}=[1 7;2 8]
D{2}=[3 9;4 10]
D{3}=[5 11;6 12]
  1 Comment
Image Analyst
Image Analyst on 30 Jan 2013
Why do you want the trouble of a cell array when just a normal numerical array would be so much easier?

Sign in to comment.

Accepted Answer

Kye Taylor
Kye Taylor on 30 Jan 2013
This is fun... you can try
C{1}=[1 2;3 4;5 6]
C{2}=[7 8;9 10;11 12]
g = @(j)[C{1}(j,:);C{2}(j,:)]'; % function handle
D = arrayfun(g,1:3,'UniformOutput',false); % awesome function

More Answers (1)

Jan on 30 Jan 2013
Edited: Jan on 30 Jan 2013
E = cat(3, C{:});
E = permute(E, [3,2,1]);
n = size(E, 3);
D = cell(1, n); % Faster than CELL2MAT:
for iD = 1:n
D{iD} = E(:, :, iD);
Sorry, I cannot test this currently.
But consider Image Analysts idea: When you operate on rectangulare numerical values, a double array is smarter and much more efficient than a cell.


Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!