2014-01-16 88 views
0

我是MATLAB新手,我遇到了单元格数组中的for循环问题。我有一个52x52单元阵列B。在每个单元格中,都有一个51x51矩阵。对于B的第一行的每个单元格,我想要计算轨迹,并且我想要矢量中的轨迹元素(并使用样条线使它们平滑)。变量dbmuscs可能每次都被覆盖,SQEDddbmus不可以覆盖。我有下面的代码行,但我不断收到此错误:In an assignment A(I) = B, the number of elements in B and I must be the same.for循环与单元阵列

X = 1:51;     
xx = linspace(1,51,250); 
SQED = zeros(1,52); 
dbmus = zeros(1,52); 
ddbmus = zeros(1,52); 
for i = 1:52 
    SQED(i) = sum(diag(B{1,i})); 
    dbmus = transpose(diag(B{1,i})); 
    cs = spline(X,[dbmus(1),dbmus,dbmus(end)]);  
    ddbmus(i) = ppval(cs,xx);       
end 

我该如何解决这个问题?

+0

这意味着您的for循环内的其中一行试图将一个向量放入一个元素中。什么行给出错误?它是for循环中的第一个或最后一个语句。 – jerad

+1

使用'dbstop if error'并检查变量的大小/类型。 – Daniel

回答

0

ppval将在xx的所有点处评估样条。这产生一个向量。然后尝试将矢量存储在标量ddbmus(i)中。

您可能想要将全矢量存储在矩阵的行(或列)中。如果是这样的话:

ddbmus = zeros(52, 250); 
for i = 1:52 
    % ... existing code 
    ddbmus(i, :) = ppval(cs,xx); 
end 
+0

谢谢彼得,这个问题解决了! – Ben