Индекс вне границ, когда строки меняют размер? - PullRequest
0 голосов
/ 25 октября 2018
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)» больше не появлялась.Я попытался изменить S (2, nn), когда j = 2, но та же самая ошибка продолжает появляться.

1 Ответ

0 голосов
/ 25 октября 2018
S=zeros(1,nn);
[...]
for j=1:3
[...]
S(j,i)=[...]

Вы определили S как (1, nn) ​​таблицу, и вы пытаетесь вставить, например, S (2, 2) что-то.У вас также есть неправильные показатели в угле.Это 1-мерная таблица, и вы пытаетесь найти элемент, например (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
...