Passare un vettore ad una funzione Matlab

di il
3 risposte

Passare un vettore ad una funzione Matlab

Salve a tutti ragazzi,
sto cercando di passare un vettore ad una funzione Matlab che ho definito io, ma non ci riesco e non riesco a trovare nulla sul web al riguardo.

Io ho un codice del tipo

[rps,index_theta]=calcola_lontana(n,vettore);
dove vettore è appunto un vettore di numeri e n è un numero costante. La firma della funzione invece è la seguente:

function y=calcola_lontana(n,vettore)
   %corpo della funzione
y=[rps,index_theta];
Vado a compilare e mi dice:

Error using calcola_lontana
Too many output arguments.

Error in prova_discrete_n (line 68)
[rps,index_theta]=calcola_lontana(n,vettore);


Mi sa che il problema sta nel passaggio dei parametri alla funzione. Chi sa spiegarmi come posso risolvere? Possibile che non riesco a passare in alcun modo questo vettore a questa funzione? Ho provato con parentesi quadre ma niente

Grazie in anticipo a tutti

3 Risposte

  • Re: Passare un vettore ad una funzione Matlab

    Il messaggio di errore è molto chiaro e non fa riferimento ai parametri di input, ma a quelli di output della funzione.

    Hai definito la funzione in modo che ritorni un solo parametro di output, ma nella tua call richiedi tre parametri di output.
  • Re: Passare un vettore ad una funzione Matlab

    Ma io vedo che nella funzione ho definito un vettore riga in uscita di 2 elementi:
    1) rps
    2) index_theta
    e nel richiamo della funzione io vado a scrivere il risultato in un vettore riga di 2 elementi:
    1)rps
    2)index_theta

    Non vedo questo errore
  • Re: Passare un vettore ad una funzione Matlab

    Se il messaggio di errore è Too many output arguments fidati, è così.

    Se definisci la funzione come
    
    function y=calcola_lontana(n,vettore)
    
    significa che la funzione ritorna una sola variabile (y)

    Nella funzione hai definito Il "tipo" della variabile come vettore (y=[rps,index_theta]), quindi la funzione ritornerà un vettore composto da due elementi.

    Di conseguenza, quando chiami la funzione, devi specificare, come output, una sola variabile (che sarà un vettore).

    L'istruzione con la quale chiami la funzione:
    [rps,index_theta]=calcola_lontana(n,vettore);
    implica che ti aspetti di ricevere come output, due variabili (rps e index_theta); il fatto che la sintassi preveda che le specifichi all'interno di parentesi quadre ([rps,index_theta]), non significa che costituiscano un vettore.

    Quindi, hai due possibilità:

    1) modificare la definizione della funzione in modo che ritorni due variabili:
    function [rps,index_theta]=calcola_lontana(n,vettore)
       %corpo della funzione
       rps=3; % Esempio di valore calcolato nella funzione
       index_theta=1; % Esempio di valore calcolato nella funzione
    % y=[rps,index_theta];
    
    in modo da poterla chiamare come
    
    [rps,index_theta]=calcola_lontana(n,vettore);
    
    2) lasci invariata la definizione della funzione:
    
    function y=calcola_lontana(n,vettore)
       %corpo della funzione
    y=[rps,index_theta];
    
    e la chiami specificando solo un parametro di output:
    
    vettore_output=calcola_lontana(n,vettore);
    
Devi accedere o registrarti per scrivere nel forum
3 risposte