行更改大小时索引超出范围?

Index out of bounds when rows change size?

n=[2 5 50];
nn=720; %number of angles
angle=linspace(-2*pi,2*pi,nn); %array of angles
S=zeros(1,nn);
for j=1:3
    z=n(j);
    for i=1:nn
        for k=0:z
            ns=2*k+1;
            S(j,i)=S(j,i)+(-1)^k*(angle(j,i))^(ns)/factorial(ns); 
        end
    end
end

如何定义 S 才能使错误 "Index in position 1 exceeds array bounds (must not exceed 1)" 不再出现。我尝试在 j=2 时更改 S(2,nn),但同样的错误不断出现。

S=zeros(1,nn);
[...]
for j=1:3
[...]
S(j,i)=[...]

您将 S 定义为 (1, nn) table,并尝试输入例如S(2, 2) 某物。 您的角度索引也有误。这是一个 1-dim table 并且您尝试寻找元素,例如 (2,2)

Fixed code: 

n=[2 5 50];
nn=720; %number of angles
angle=linspace(-2*pi,2*pi,nn); %1-dim table of angles- not a 2-dim table
S=zeros(3,nn); %replaced 1 with 3
for j=1:3
    z=n(j);
    for i=1:nn
        for k=0:z
            ns=2*k+1;
            S(j,i)=S(j,i)+(-1)^k*(angle(i))^(ns)/factorial(ns); %deleted j from angle(i, j) 
        end
    end
end