Effacer les filtres
Effacer les filtres

Subscript indices must either be real positive integers or logicals - quick question on how to fix

1 vue (au cours des 30 derniers jours)
Greetings all,
I have the following code:
Response_values_H= 0:0.01:9;
R_h=zeros(size(Response_values_H));
for n=1:length(Response_values_H)
rValue_H = Response_values_H(n);
if rValue_H < 9.1
R_h(n)=sqrt(4*rValue_H.^2+1)-2*rValue_H;
else
R_h(n)=0;
end
end
I have a quick question. When I enter an integer, i.e. R_h(25), it returns output. But when I try and enter a decimal, say R_h(2.5), I get: Subscript indices must either be real positive integers or logicals.
So, I tried using round(), but I want to input a decimal. This may be a simple solution, but how can I input a decimal without getting an error? Is there any way to fix it knowing the input must be a decimal?
Thanks! -J

Réponse acceptée

Chad Greene
Chad Greene le 13 Avr 2015
As I understand your question, you run the code above, then you want to find out values of R_h for some given x value. When you type R_h(25), it'll give you the 25th value of R_h. If you want to find some value of R_h corresponding to an arbitrary value of Response_values, you'll need to interpolate:
Response_values_H= 0:0.01:9;
R_h=zeros(size(Response_values_H));
for n=1:length(Response_values_H)
rValue_H = Response_values_H(n);
if rValue_H < 9.1
R_h(n)=sqrt(4*rValue_H.^2+1)-2*rValue_H;
else
R_h(n)=0;
end
end
plot(Response_values_H,R_h);
xlabel('Response values')
ylabel('R_h')
R_h_i = interp1(Response_values_H,R_h,2.5);
hold on
plot(2.5,R_h_i,'ro','markersize',10)
  2 commentaires
Jesse
Jesse le 13 Avr 2015
Thanks Chad! I knew I was missing something!
-J
Chad Greene
Chad Greene le 13 Avr 2015
By the way, this is a faster and cleaner method of calculating R_h:
Response_values_H= 0:0.01:9;
R_h = sqrt(4*Response_values_H.^2+1)-2*Response_values_H;
R_h(Response_values_H>=9.1) = 0;
No need for preallocating, looping, or if statements.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by