Manipulating cell arrays based on index
10 次查看(过去 30 天)
显示 更早的评论
how can I manipulate the elements of an array of cells based on index? for a double array, I can just do this:
>> j = zeros(4);
>> j(1:8) = 1;
>> j(9:16) = 8;
>> j
j =
1 1 8 8
1 1 8 8
1 1 8 8
1 1 8 8
However, for a cell array, I cannot
>> j = cell(4,1)
j =
[]
[]
[]
[]
>> j{1:4} = [2 3 4]
The right hand side of this assignment has too few values to satisfy
the left hand side.
I could do this with a for loop easily, but I intend to extend this to a cell with ~400 elements.
After this is figured out, I'd also like to be able to do something based on the index, such as:
j = cell(100,1);
j(1:100) = ones(1:100,1);
1 个评论
采纳的回答
Stephen23
2015-7-1
编辑:Stephen23
2015-7-1
"However, for a cell array, I cannot"
Of course you can! Cell array indexing is covered here, and is well worth reading:
But it depends what you expect. What you trying to do here is assign one array to the inside of multiple cells. This does not work. But you can allocate four cells to four cells (these are equivalent):
X(1:4) = {1,2,3,4}
X(1:4) = num2cell([1,2,3,4])
Or one cell (containing an array) to four cells:
X(1:4) = {[2,3,4]}
So if you want a cell array where every cell contains the same element, try this:
X = cell(100,1);
X(:) = {ones(100,1)}
更多回答(1 个)
Azzi Abdelmalek
2015-7-1
编辑:Azzi Abdelmalek
2015-7-1
jj=cell(100,1)
jj(1:100) = num2cell(ones(100,1))
3 个评论
Azzi Abdelmalek
2015-7-1
编辑:Azzi Abdelmalek
2015-7-1
jj=cell(100,1);
out=cellfun(@(x) ones(100,1),jj,'un',0)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!