Filling up a matrix

2 次查看(过去 30 天)
Royvg94
Royvg94 2015-9-28
I have an array of 69 x 1 cells. Every cell contains a matrix of either 12 x 1 or 13 x 1. I want Matlab to make a matrix of 13 x 69 and filling up the empty spaces of the 12 x 1 matrices by adding zero's.
Is this possible?
Thanks for the help!

回答(2 个)

James Tursa
James Tursa 2015-9-28
How about a simple loop:
result = zeros(13,69);
for k=1:69
n = numel(mycellarray{k});
result(1:n,k) = mycellarray{k};
end
  1 个评论
Royvg94
Royvg94 2015-9-29
The output of this is a matrix with only zero's. I need the results from all matrices in the array, and the matrices with only 12 rows, need to be filled to 13 by adding a zero.

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2015-9-29
first13 = @(V) V(1:13);
result = cell2mat( cellfun(@(V) first13([V;0]), YourCellArray, 'Uniform', 0) );
If the cells can be variable size all the way from empty to 13, then use
first13([V;zeros(13,1)])
  2 个评论
Royvg94
Royvg94 2015-9-29
I think this is what i need, the only problem is that the output is in 1 column, and i need it to be 13 x 69...
Walter Roberson
Walter Roberson 2015-9-29
result = cell2mat( cellfun(@(V) first13([V;0]), YourCellArray, 'Uniform', 0).' );

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by