Info
Cette question est clôturée. Rouvrir pour modifier ou répondre.
index must be a positive integer or logical
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
this is part of my code with SPEED=8 ASPECT=30
DOPPLER = 2925/(2925 + SPEED*cos(ASPECT)); TONE_A=88*DOPPLER; atten(TONE_A)=( 0.1*TONE_A^2/(1+TONE_A^2))+(40*TONE_A^2/(4.100+TONE_A^2))+(2.75*(10^-4)*TONE_A^2)+0.003;
i get Attempted to access atten(87.9768); index must be a positive integer or logical.
what is the problem ?
1 commentaire
Varun Pai
le 14 Oct 2015
From the above code, i understand that you are assigning the TONE_A th position element of matrix 'atten'. Matrix indexing in matlab can only be a positive integer or logical.
eg: atten(1),atten(2)..etc
Réponses (1)
Star Strider
le 2 Oct 2015
You first need to define ‘atten’ as a function if you want to call it as one:
atten = @(TONE_A) ( 0.1*TONE_A^2./(1+TONE_A^2))+(40*TONE_A^2./(4.100+TONE_A^2))+(2.75*(10^-4)*TONE_A^2)+0.003; % Anonymous Function ‘atten’ atten_TONE_A = atten(TONE_A); % Call ‘atten’ & Assign Output To A Variable
3 commentaires
Walter Roberson
le 14 Oct 2015
atten = @(TONE) ( 0.1 * TONE^2 ./ (1+TONE.^2)) + (40 * TONE.^2 ./ (4.100 + TONE.^2)) + (2.75 * (10^(-4)) * TONE.^2) + 0.003; % Anonymous Function ‘atten’ atten_TONE_A = atten(TONE_A); atten_TONE_B = atten(TONE_B);
Thorsten
le 14 Oct 2015
Modifié(e) : Thorsten
le 14 Oct 2015
No. You define a single function for a TONE
atten = atten = @(TONE) ( 0.1*TONE.^2./(1+TONE.^2))+(40*TONE.^2./(4.100+TONE.^2))+(2.75*(10^-4)*TONE.^2)+0.003; % Anonymous Function ‘atten’
And call it with different arguments
TONE_A = 88*DOPPLER; AA = atten(TONE_A); TONE_B = 123*DOPPLER: % or whatever TONE_B you have AB = atten(TONE_B);
If you have many TONEs, this scheme will be cumbersome and you can call atten with a vector of all your TONEs
A = atten([TONE_A TONE_B TONE_C])
Note that I have changed Star Strider's function to use point-wise operations .^ such that it can handle multiple inputs.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!