Variazione dell ordine delle righe di una matrice

di il
1 risposte

Variazione dell ordine delle righe di una matrice

Ciao a tutti!

nel mio lavoro di tesi sono incappato in un problema.. sto lavorando su un job-shop-scheduling, allínterno del main programm ho una matrice di input con 64 righe e 4 colonne... lórdine delle righe e´ momentanemanete casuale, io dovrei risistemare l´ordine delle righe , e NON quello delle colonne , per trovare il migliore otrdine che mi garantisca un minor tempo di produzione del mio pezzo meccanico finale..

come posso fare?

grazie in anticipo

1 Risposte

  • Re: Variazione dell ordine delle righe di una matrice

    Per riorganizzare le righe di una matrice M è sufficiente definire un vettore (di lunghezza pari al numero delle righe della matrice) che contenga la nuova sequenza (il nuovo ordine) delle righe.

    Data, per esempio, una matrice M(5x9), il vettore

    nuovo_ordine_righe=[2 4 1 3 5];]

    viene utilizzato per riorganizzarne le righe in modo che:

    [*] la seconda riga diventi la prima
    [*] la quarta riga diventi la seconda
    ecc.

    L'effettiva riorganizzazione della matrice M viene quindi effettuata tramite l'istruzione:

    M=M(nuovo_ordine_righe,:)

    In essa, il primo indice (il vettore ""nuovo_ordine_righe" definisce il nuovo ordine delle righe, il secondo indice, rappresentato dai "due punti" specifica deve essere "spostata" l'intera riga (i ":" si possono leggere come "tutte le colonne"

    Lo stesso principio si può applicare anche alle colonne; le istruzioni:

    nuovo_ordine_colonne=[1 5 2 4 3];
    M2=M(:,nuovo_ordine_colonne)

    modifica l'ordine delle colonne.
    Volendo è anche possibile riordinare sia le righe che le colonne:

    M3=M(nuovo_ordine_righe,nuovo_ordine_colonne)

    La definizione dei vettore che definisce il nuovo ordine delle righe (e / o delle colonne) può essere definito in molti modi, a volte anche implicitamente; l'istruzione:

    [iM4=M(end1,:);[/i]

    semplicemente inverte l'ordine delle righe della matrice M.

    Per quanto riguarda

    [...]
    per trovare il migliore otrdine che mi garantisca un minor tempo di produzione del mio pezzo meccanico finale..
    non avendo a disposizione i dati ed i principi per l'ordinamento, non posso essere d'aiuto.
    
    % 
    % Generazione matrice di esempio
    %
    M=[];
    for i=1:5
       M=[M;(1:9)*i];
    end
    % 
    % Definizione del nuovo ordine delle righe
    % 
    nuovo_ordine_righe=[2 4 1 3 5];
    % 
    % Riorganizzazione delle righe della matrice
    % 
    M1=M(nuovo_ordine_righe,:);
    % 
    % Riorganizzazione delle colonne della matrice
    % 
    nuovo_ordine_colonne=[1 5 2 4 3];
    M2=M(:,nuovo_ordine_colonne)
    % 
    % Riorganizzazione delle righe e delle colonne della matrice
    % 
    M3=M(nuovo_ordine_righe,nuovo_ordine_colonne)
    % 
    % Inversione delle righe della matrice
    % 
    M4=M(end:-1:1,:)
    
    
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte