hi all y teachers,
i have a cell :
a = {{8x1cell} {14x1cell} {11x1cell} {23x1cell} {17x1cell} {8x1cell} {18x1cell} {14x1cell} {20x1cell} {28x1cell}}
i need to change the dimension of each cell to a fix number, say 50x1 cell. So each cell will have dimension 50x1, and i want the rest rows of the cell to be 0 or []
ex: take the 1st col of the cell, it's 8x1cell and i need it to be 50x1 with 42rows left to be zero or []
old 8x1cell = {'i'; 'need'; 'a'; 'glass'; 'of'; 'water'; 'right'; 'now'}
new 8x1cell = {{'i'; 'need'; 'a'; 'glass'; 'of'; 'water'; 'right'; 'now'; 0; 0; ... till row 50}
is there any possible way i can perform that? really need your helps, plzz! :(
thx,
Maya

 Accepted Answer

for k=1:length(a)
a{k}(end+1:50={[]}; %pad with []
%a{k}(end+1:50={0}; %pad with []
end

More Answers (2)

Jan
Jan on 13 Oct 2011
for k=1:length(a)
L = length(a{k});
a{k}(L+1:50) = {0};
end

1 Comment

Hello there, lets say I have the cell array
1×6 cell array
{8791×1 double} {8782×1 double} {8802×1 double} {8795×1 double} {8806×1 double} {8791×1 double}
I need to change all of them to be
{8782×1 double}
So that I would have a 1×6 cell array where there is repeated {8782×1 double}

Sign in to comment.

Rusmaya Luthfina
Rusmaya Luthfina on 14 Oct 2011

0 votes

Wuaaaaa,, its work! the answers you both give me are working exactly what i need,, i've just checked and it's so simple,, stupid me. sorry for bothering you with this low-level question.. :D
So many thanks for you Mr Simon and Mr Jiang.
Ouw,, may i asked 1 more low-level question?
Is it possible to make that cell array (a) as output in a function?? 'coz i need to call a function containing that cell as an output..
---Maya----

5 Comments

The answer is yes. Treat it no differently than any other variable. Put it in the output argument.
Also, see update in my answer. It provided both ways to pad with zero or with [].
Thank you :D
excuse me, is ur code only works for cell of cell array? what about if i have cell of double array?
ex:
b = {[8x1double] [14x1double] ... soon}
i've implemented ur code and it's said error
for k=1:length(a)
a{k}(end+1:50={[]}; %pad with []
%a{k}(end+1:50={0}; %pad with []
end
error :Conversion to double from cell is not possible.
and for your 1st code
a{k}{N} = [];
error Cell contents assignment to a non-cell array object.
sorry for bothering u again..
i've already figure this out,, :D thx
What is the solution to your problem? I can't figure it out

Sign in to comment.

Categories

Find more on Loops and Conditional Statements 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!