why am I getting "Array indices must be positive integers or logical values"
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aijalon Marsh
el 11 de Feb. de 2022
Respondida: Image Analyst
el 12 de Feb. de 2022
clear
syms t;
Fs=5;
T=1/Fs;
L=1500;
t=(0:L-1)*T;
Yo=4+4.005*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7);
y = fft(Yo);
f=2*pi*Fs(0:(L/2))/L;
p2 = abs(y/L);
p1=p2(1:L/2+1);
p1(2:end-1) = 2*p1(2:end-1);
%f=2*pi*Fs(0:(L/2))/L;
plot(f,p1)
title ('Amplitude Spectrum')
xlabel('time')
ylabel('y(t)')
1 comentario
Respuesta aceptada
Voss
el 11 de Feb. de 2022
You were indexing Fs with a vector that had a 0 in it. Looks like you meant to be multiplying Fs by that vector instead:
clear
syms t;
Fs=5;
T=1/Fs;
L=1500;
t=(0:L-1)*T;
Yo=4+4.005*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7);
y = fft(Yo);
% f=2*pi*Fs(0:(L/2))/L; % <- indexing
f=2*pi*Fs*(0:(L/2))/L; % <- multiplying
p2 = abs(y/L);
p1=p2(1:L/2+1);
p1(2:end-1) = 2*p1(2:end-1);
%f=2*pi*Fs(0:(L/2))/L;
plot(f,p1)
title ('Amplitude Spectrum')
xlabel('time')
ylabel('y(t)')
0 comentarios
Más respuestas (2)
Jan
el 11 de Feb. de 2022
The variable Fs has the value 5. Then the expression:
Fs(0:(L/2))
is treated as indices. 0 is not a valid index. In addition Fs is a scalar and indexing cannot work apart from the index 1.
Maybe you mean:
Fs * (0:(L/2))
0 comentarios
Ver también
Categorías
Más información sobre Financial Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!