Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

index must be a positive integer or logical

1 visualizzazione (ultimi 30 giorni)
ihab
ihab il 2 Ott 2015
Chiuso: MATLAB Answer Bot il 20 Ago 2021

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 Commento
Varun Pai
Varun Pai il 14 Ott 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

Risposte (1)

Star Strider
Star Strider il 2 Ott 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 Commenti
Walter Roberson
Walter Roberson il 14 Ott 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
Thorsten il 14 Ott 2015
Modificato: Thorsten il 14 Ott 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.

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by