我想做
myCellArray = myCcellArray{indices}
其中indices只是0
s和1
s,其元素数与myCellArray
中的行数相同,但它不起作用。我该怎么办?
答案 0 :(得分:12)
您需要使用括号而不是花括号来进行索引。
>> arr = cell(2,2);
>> arr{1,1} = magic(4);
>> arr{1,2} = 'Hello';
>> arr{2,1} = 42;
>> arr{2,2} = pi;
>> arr
arr =
[4x4 double] 'Hello'
[ 42] [3.1416]
>> idx = logical(zeros(2,2));
>> idx(1,1) = true;
>> idx(2,2) = true;
>> arr(idx)
ans =
[4x4 double]
[ 3.1416]
答案 1 :(得分:1)
如果要切片单元格数组,请使用括号。例如:
%# random cellarray of strings, and a logical indices vector
myCcellArray = cellstr(num2str((1:10)','value %02d')); %'
indices = rand(size(myCcellArray)) > 0.5;
%# slicing
myCellArray = myCcellArray(indices)
答案 2 :(得分:0)
amro说的是对的,你应该使用括号。
但另一个关键的事情是在这里使用非数字1
和0
的布尔值。
所以,如果你有数字
I = [0 0 0 1 0 1]
你应该使用
myCellArray(I~=0)
将其编入索引。令人困惑的是,布尔数组在Matlab中显示为1和0,尽管它在内部表现得完全不同。