How to solve "index exceeds the number of array elements"
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ryan Majid
el 24 de Dic. de 2020
Comentada: Ryan Majid
el 24 de Dic. de 2020
Hi,
Why I can't plot the following code? The error is: Index exceeds the number of array elements (1).
What I'm trying to achive is that a user enters a scalar value f (such as 1500) anf Ht and Hr. So, I want to find value of ahr and L accondingliy and then plot L vs f. SO on f axis I shoud have 100,150,200,250,300,....,1500 and corrsponding values on L axis.
for i=100:50:f
cm=0;
ahr(i)=(1.1*log10(f(i))-0.7)*Hr-1.56*log10(f(i))-0.8;
L(i)=46.3+33.9*log10(f(i))-13.82*log10(Ht)-ahr+(44.9-6.55*log10(Hr))*log10(d)+cm;
plot(f,L)
end
0 comentarios
Respuesta aceptada
Mischa Kim
el 24 de Dic. de 2020
Editada: Mischa Kim
el 24 de Dic. de 2020
Hi Ryan, try something like this:
fl = 100;
fu = 1500; % replace as necessary
N = 100;
f = linspace(fl,fu,N);
cm = 0;
for ii = 1:numel(f) % careful with "i", this is also the imaginary unit
ahr(ii) = (1.1*log10(f(ii))-0.7)*Hr-1.56*log10(f(ii))-0.8;
L(ii) = 46.3+33.9*log10(f(ii))-13.82*log10(Ht)-ahr(ii)+(44.9-6.55*log10(Hr))*log10(d)+cm;
end
plot(f,L)
3 comentarios
Mischa Kim
el 24 de Dic. de 2020
Editada: Mischa Kim
el 24 de Dic. de 2020
With
for i=100:50:f
i is assigned values: 100, 150, 200, 250, etc. As a result, in
L(ii) = 46.3+33.9*log10(...
you create a (rather long) vector L and assign values to L(100), L(150), and so on and so forth. At the same time, f is a scalar (just one number). For the plot() command to work f and L need to be vectors of the same size.
Más respuestas (0)
Ver también
Categorías
Más información sobre Title en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!