在matlab中为单元格指定值

时间:2015-07-27 13:49:13

标签: matlab

我的单元格大小为public class CounterPro { int pn = 0; // positive numbers int mn = 0; // minus numbers int nn = 0; // neutral numbers int sum = 0; // sum String r; // result int i = 0; public String sumAll(int[] array){ while(i < array.length){ sum += array[i]; if(array[i]==0){ nn += 1; } i+=1; } pn = (array.length - nn + sum)/2; mn = (array.length - sum -nn)/2; if(pn > mn && pn > nn){ r = "woaa lost of positive 1"; } else if(mn > pn && mn > nn){ r = "woaa lost of minus 1"; } else { r = "woaa lost of neutral numbers"; } return r; } ,另一个单元格大小为B = 36*3969。我想分配值s = 36*55。但是我收到以下错误。

s{:,1} = B{:,2048} s{:,2} = B{:,2049} s{:,3} = B{:,2049} and so on

以下是代码部分。

The right hand side of this assignment has too few values to satisfy the left hand side.

Error in group (line 22)
        s{:,a} = B{:,i};

修改
您可以找到文件here

2 个答案:

答案 0 :(得分:1)

B{:,i}将返回以逗号分隔的列表,即它的输出数量等于B的行数。同样适用于s{:,a}。赋值运算符不允许您一次将多个输出分配给多个输入。在这种情况下,您应该使用常规括号:

s(:,a) = B(:,i);

答案 1 :(得分:0)

raw = rand(142884,1);
B = reshape(raw, 36, 3969);
C = mat2cell(B,ones(36,1),ones(3969,1));
s = cell(36,55);

然后将一列C分配给s use()运算符

s(:,1) = C(:,2048);

由于我不知道B中的实际内容,我无法对其进行全面测试。我想成功将取决于B中的内容。