How can i simultaneously reference in cells
2 views (last 30 days)
Show older comments
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
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?
Accepted Answer
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
0 Comments
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);
end
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.
0 Comments
See Also
Categories
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!