Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

index must be a positive integer or logical

1 visualización (últimos 30 días)
ihab
ihab el 2 de Oct. de 2015
Cerrada: MATLAB Answer Bot el 20 de Ag. de 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 comentario
Varun Pai
Varun Pai el 14 de Oct. de 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

Respuestas (1)

Star Strider
Star Strider el 2 de Oct. de 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 comentarios
Walter Roberson
Walter Roberson el 14 de Oct. de 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 el 14 de Oct. de 2015
Editada: Thorsten el 14 de Oct. de 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.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by