如果我有一个4×1细胞结构表示a=[A1 A2 A3 A4]
:如何使用Matlab在具有约束的单元格数组中选择相同的值?
a=cell(4,1)
a{1}=[1 3 1 0]
a{2}=[3 3 3 3]
a{3}=[3 2 3 2]
a{4}=[3 3 3 2]
B=[1 1 1 2]; %priority
我想执行以下操作:对应于优先B=[1 1 1 2]
(其中B=1
是最高优先级,A=3
皮克细胞)
这意味着,找到任何以[3 3 3#]开头的单元格,其中B
中的所有优先级都是1。
理想的答案应该是:a{2}
= [3 3 3 3]
和a{4}
= [3,3,3,2]
我的尝试是为了补充一点:
[P arrayind]=min(B) % problem is that arrayind return index=1 only .. not all indices
if P==1
arrayindex = 1:4 ; %look at each index of the array
c = a(cellfun(@(x) ismember(x(arrayindex), 3), a));
end
但是这给了我一个错误,指出:
Error using cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.
通过调整t他编码以适应这个错误:
c = a(cellfun(@(x) ismember(x(arrayindex), 3), a,'UniformOutput',false));
I get this error :
Error using subsindex
Function 'subsindex' is not defined for values of class 'cell'.
现在我被困在这一点。
,您是否试图根据错误编辑'cellfun'线?这是'cellfun(@(x)...,'UniformOutput',false);' – bla 2013-03-22 17:46:05
@natan是的,我应该提到这一点。更新问题 – NLed 2013-03-22 17:46:43
运行此代码后,您对c的期望值是多少? – wakjah 2013-03-22 17:47:32