Scorrere due vettori e salvare le diverse combinazioni in matrice

di il
2 risposte

Scorrere due vettori e salvare le diverse combinazioni in matrice

Buonasera,
sto cercando di scorrere due vettori identici t e salvare tutte le diverse occorrenze in una matrice n righe 2 colonne (in pratica vorrei avere nella prima colonna il primo elemento del primo vettore e nella seconda il primo del secondo vettore, poi primo elemento del primo e secondo del secondo vettore... fino ad avere tutte le diverse combinazioni).
Avevo pensato a 3 cicli for 2 utilizzati per scorrere i vettori e uno che utilizzo per salvare i risultati.
Evidentemente sbaglio qualcosa..... sicuramente ci sono errori nella gestione dei for ma non riesco a risolvere il problema!

Grazie

mat=zeros(10201,2);
t=-0.5:0.01:0.5;
for i=1:length(t)
    for j=1:length(t)
    	for k=1;length(mat)
        	mat(k,:)=[t(i),t(j)];
        end
    end
end

2 Risposte

  • Re: Scorrere due vettori e salvare le diverse combinazioni in matrice

    Se quello che vuoi ottenere è:
    [*] dato ad esempio un generico vettore con elementi non necessariamente ordinati)
    
    t=[1   9   5   3]
    
    [*] generare la matrice
    
    m=[
       1   1
       1   9
       1   5
       1   3
       9   1
       9   9
       9   5
       9   3
       5   1
       5   9
       5   5
       5   3
       3   1
       3   9
       3   5
     ];
     
    Puoi provare con il codice che segue, tratto (e semplificato) da una precedente risposta ad una domanda (https://www.iprogrammatori.it/forum-programmazione/matlab-simulink/distanza-tra-due-punti-generici-t36931.html) la quale, ancorchè più articolata, richiedava, comunque, la generazione di una matrice (n x 4) con tutte le possibili combinazioni del vettore di input.

    I commenti nel codice dovrebbero chiarire i vari passaggi.
    
    
    % Vettore di input
    t=[1 9 5 3];
     
    n_col=2;
    n=length(t);
    
    % Creazione della seconda colonna
    % i valore del vettore di inpur vengono ripetuti tante volte quanti sono gli
    % elementi del vettore stesso
    y1=repmat(t,n^0,n^(n_col-1));
    y1=y1(:);
    % Creazione della prima colonna
    % Ogni vlaore del vettore viene ripetuto tante volte quanti sono gli elementi
    % del vettore stesso
    x1=repmat(t,n^1,n^(n_col-2));
    x1=x1(:);
    m=[x1 y1]
    
  • Re: Scorrere due vettori e salvare le diverse combinazioni in matrice

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte