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