以下代码仅适用于名为B
和C
A=cellfun(@minus, B, C, 'UniformOutput', false)
我想执行一个循环,以便能够为我的所有单元格数组执行减法操作。 B {i}和C {i}的示例如下:
B{1}=[0.435]
B{2}=[0.333] [0.532]
B{3}=[0.021] [0.432] [0.312] //command window output
C{1}=[0.211]
C{2}=[0.243] [0.116]
C{3}=[0.553] [0.212] [0.375] //command window output
B{1}-C{1}
B{2}-C{2}
B{3}-C{3}
我尝试在{i}
,A
和B
后面添加C
,以便成为:
A{i}=cellfun(@minus, B{i}, C{i}, 'UniformOutput' , false)
然而,它似乎无法正常工作。这有什么解决方案吗?感谢
答案 0 :(得分:0)
您有不必要的嵌套单元格数组,即B
是单元格数组的单元格数组,B{i}
是数字的单元格数组。
如果你想保留这种格式,这里有一种使用cellfun
计算结果的方法(A
也是一个数字单元数组的单元格数组):
% exiting data
B = cell(3,1);
B{1} = {0.435};
B{2} = {0.333, 0.532};
B{3} = {0.021, 0.432, 0.312};
C = cell(3,1);
C{1} = {0.211};
C{2} = {0.243, 0.116};
C{3} = {0.553, 0.212, 0.375};
A = cellfun(@(b,c)cellfun(@minus, b, c, 'Uniform',false), B, C, 'Uniform',false);
否则我建议你减少嵌套级别,改为使用它:
% note the difference between square-brackets and curly-brackets
B = cell(3,1);
B{1} = [0.435];
B{2} = [0.333, 0.532];
B{3} = [0.021, 0.432, 0.312];
C = cell(3,1);
C{1} = [0.211];
C{2} = [0.243, 0.116];
C{3} = [0.553, 0.212, 0.375];
现在,您可以使用单个cellfun
(无嵌套)计算结果:
A = cellfun(@minus, B, C, 'Uniform',false)