Info

此问题已关闭。 请重新打开它进行编辑或回答。

index must be a positive integer or logical

1 次查看(过去 30 天)
ihab
ihab 2015-10-2
关闭: MATLAB Answer Bot 2021-8-20

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 个评论
Varun Pai
Varun Pai 2015-10-14
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

回答(1 个)

Star Strider
Star Strider 2015-10-2

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 个评论
Walter Roberson
Walter Roberson 2015-10-14
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
Thorsten 2015-10-14
编辑:Thorsten 2015-10-14

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.

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by