Trying to plot a periodic function
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Not sure how to fix this error please assist
t=0:0.1:1000
ao=0.504
for n=1:1000
an=0.504*(2/(1+16*(n^2)));
bn=0.504*((8*n)/(1+16*(n^2)));
f(t)=ao + (an*cos(2*n*t))+(bn*sin(2*n*t))
end
plot(t,f(t));
here is my error
Subscript indices must either be real positive integers or logicals.
Error in asda (line 6)
f(t)=ao + (an*cos(2*n*t))+(bn*sin(2*n*t))
0 Kommentare
Antworten (1)
Star Strider
am 12 Apr. 2018
First, MATLAB requires that subscripts (and indices) be integers greater than zero, so using ‘t’ as an index variable will not work.
Second, your ‘f’ calculation is vectorised at each iteration, producing a (1x10001) row vector. If you want to calculate and store all of them for each iteration of ‘n’, you have to account for that in your indexing.
Try this:
f(n,:)=ao + (an*cos(2*n*t))+(bn*sin(2*n*t));
with the plot call then being simply:
plot(t,f)
4 Kommentare
Star Strider
am 12 Apr. 2018
You did not define ‘t’ correctly.
Try this:
t = linspace(0, pi, 250);
as well as my earlier suggestions. You might want to extend ‘t’ for a few cycles to see that the waveform repeats periodically, as it should. I will let you experiment with that.
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!