Matlab如何对多个单元阵列执行减法运算?

时间:2014-11-10 02:16:55

标签: matlab loops cell-array subtraction

以下代码仅适用于名为BC

的2个单元格数组
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}AB后面添加C,以便成为:

A{i}=cellfun(@minus, B{i}, C{i}, 'UniformOutput' , false)

然而,它似乎无法正常工作。这有什么解决方案吗?感谢

1 个答案:

答案 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)