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

Matlab如何对多单元阵列执行减法?,matlab,loops,cell-array,subtraction,Matlab,Loops,Cell Array,Subtraction,下面的代码仅适用于2个单元数组,分别命名为B和C 我想执行一个循环,以便能够对所有单元格数组执行减法运算。 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 w

下面的代码仅适用于2个单元数组,分别命名为B和C

我想执行一个循环,以便能够对所有单元格数组执行减法运算。 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)
然而,它似乎不起作用。有什么解决办法吗?谢谢

编辑: 您有不必要的嵌套单元数组,即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];
现在,您可以使用单个单元格计算结果,无需嵌套:

A = cellfun(@minus, B, C, 'Uniform',false)

我正在给你写答案的时候你把它删掉了。。。请避免转载问题!很抱歉给您带来不便。cellfun适用于多单元阵列吗?因为它只能在2之间减号。您发布的代码甚至没有有效的语法,您无法编写C{3}=[0.553][0.212][0.375]!下一次包含我们可以复制/粘贴的代码时,这些实际上是我的命令窗口输出。我知道这一点,但这只会让我们更难帮助您。。您可以看到,正是因为这个原因,您前面的问题中出现了混乱,其他人无法理解您的数据的格式。你的问题越清楚,你得到有用答案的机会就越大。我的B{i}和C{i}由不同大小的数组组成,但每次B{i}减去C{i}时,它们的大小都相同。我需要把它们圈起来。上面是大小为3的单元格的简单示例。
A = cellfun(@minus, B, C, 'Uniform',false)