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.
Cette question est clôturée.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!