Hey all newbie to matlab, was wondering what I can do to fix the "for loop" code I have below, I am getting the "array indices must be positive integers." Thanks in advance!

1 visualizzazione (ultimi 30 giorni)
clear;
counter = 0;
for t = -15:0.2:15;
y(t) = counter;
counter = ((t^4)-(3*t^2)+(2*t)-1)
end;

Risposta accettata

DGM
DGM il 29 Set 2021
Try this:
counter = 0;
t = -15:0.2:15;
y = zeros(size(t));
for k = 1:numel(t)
y(k) = counter;
counter = ((t(k)^4)-(3*t(k)^2)+(2*t(k))-1);
end
That said, you don't really need a loop to do this:
y2 = (t.^4 - 3*t.^2 + 2*t - 1);
y2 = [0 y2(1:end-1)];
immse(y,y2) % show that the two results are identical

Più risposte (1)

Kevin Holly
Kevin Holly il 29 Set 2021
clear;
counter = 0;
y=[];
for t = -15:0.2:15;
y = [y; counter];
counter = ((t^4)-(3*t^2)+(2*t)-1);
end
The indices for the array cannot be a negative number and has to be an integer. You cannot have an array with a value indexed at let's say 1.5.
Let's look at the first 3 values in the array
y(1:3)
ans = 3×1
1.0e+04 * 0 4.9919 4.7291
I can view the first value as such:
y(1)
ans = 0
Let's look at the third
y(3)
ans = 4.7291e+04
I cannot view a negative nor integer

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by