【问题标题】:Index out of bounds when rows change size?行更改大小时索引超出范围?
【发布时间】:2019-03-29 14:25:02
【问题描述】:
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 以使“位置 1 中的索引超出数组边界(不得超过 1)”错误不再出现。我尝试在 j=2 时更改 S(2,nn),但同样的错误不断弹出。

【问题讨论】:

    标签: arrays matlab indexoutofboundsexception taylor-series


    【解决方案1】:
    S=zeros(1,nn);
    [...]
    for j=1:3
    [...]
    S(j,i)=[...]
    

    您将 S 定义为 (1, nn) 表,并尝试放入例如S(2, 2) 的东西。 你也有错误的角度指数。这是一个 1-dim 表,您尝试寻找元素,例如 (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
    

    【讨论】:

    • 谢谢,之前我改变了 S 的大小,但我做错了没有从角度(j,i)中删除 j...非常感谢!
    猜你喜欢
    • 2018-11-06
    • 2017-02-16
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多