How to solve "index exceeds the number of array elements"
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ryan Majid
am 24 Dez. 2020
Kommentiert: Ryan Majid
am 24 Dez. 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 Kommentare
Akzeptierte Antwort
Mischa Kim
am 24 Dez. 2020
Bearbeitet: Mischa Kim
am 24 Dez. 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 Kommentare
Mischa Kim
am 24 Dez. 2020
Bearbeitet: Mischa Kim
am 24 Dez. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Title finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!