Matlab Function

di il
1 risposte

Matlab Function

Buongiorno, utilizzando una function in matlab devo scrivere un programma che mi consenta(attraverso un ciclo) di stampare una matrice triangolare superiore. Ho stamapato la matrice iniziale attraverso la prima function. Adesso che dovrei costruire la matrice triangolare superiore (sempre attraverso una function) partendo da quella della function precedente, come faccio a chiamare in input nella nuova function, la matrice creata in precedenza e salvata nella workspace?
In poche parole devo avere come input nella function, una variabile salvata nelle workspace e devo lavorare con quella.
Grazie

1 Risposte

  • Re: Matlab Function

    Non sono sicuro di avere capito.

    Ad ogni modo, se hai due funzioni, la seconda delle quali deve operare su una creata dalla prima funzione, la cosa più semplice che puoi fare è
    [*] dichiarare la variabile che ti interessa come parametro di output della prima funzione
    [*] definire la seconda funzione in modo richieda almeno un parametro di input

    Quando, nel tuo codice esegui chiami la prima funzione, questa creerà nel workspace la matrice che desideri.
    Quando chiami la seconda funzione specifica, come parametro, il nome che hai assegnato alla matrice

    Un piccolo esempio:
    [*] la prima funzione crea semplicemente una matrice (oltre ad alcuni controlli e un paio di output aggiuntivi (per completezza dell'esempio)
    [*] la seconda funzione accetta in input una matrice ed un flag n base al quale restituisce,in output la matrice triangolare superiore o inferiore della matrice di input

    Prima funzione
    
    function [matrice_out,x,y]=first_function(r,c)
    go_on=1;
    if(r <= 1)
       disp('Errore in first_function: parametro 1 <= 0')
       go_on=0;
    end
    if(c <= 1)
       disp('Errore in first_function: parametro 2 <= 0')
       go_on_0;
    end
    if(go_on)
       matrice_out=rand(r,c)
       x=123;
       y=333;
    end
    

    Seconda funzione
    
    function [matrice_tri]=second_function(input_mat,sup_inf)
    [n_row,n_col]=size(input_mat)
    go_on=1;
    if(n_row < 2 || n_col < 2)
       disp('Errore in second_function: il primo input deve essere una matrice')
       go_on=0;
    end
    if(go_on)
       if(sup_inf == 1)
          matrice_tri=triu(input_mat)
       elseif(sup_inf == 0)
          matrice_tri=tril(input_mat)
       else
          disp('Errore in second_function: secondo parametro non valido')
          mattrice_tri=NaN
       end
    end
    
    Chiamata delle due funzioni
    
    
    r=1;
    c=10;
    
    [matrice_completa,p2,p3]=first_function(r,c)
    [matrice_tri]=second_function(matrice_completa,1)
    
Devi accedere o registrarti per scrivere nel forum
1 risposte