Info
This question is closed. Reopen it to edit or answer.
index must be a positive integer or logical
2 views (last 30 days)
Show older comments
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 Comment
Varun Pai
on 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
Answers (1)
Star Strider
on 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 Comments
Walter Roberson
on 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
on 14 Oct 2015
Edited: Thorsten
on 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.
This question is closed.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!