Creare due vettori in MatLab
Salve a tutti,
dovrei creare due vettori in Matlab e non so come fare. Il primo vettore è un vettore colonna del tipo:
il secondo vettore invece è sempre un vettore colonna che mette in fila tutte le riche di una matrice. Ad esempio se ho una matrice del tipo
So che la procuderua consiste in un ciclo for ma non so come impostarlo.
Grazie per l'aiuto.
dovrei creare due vettori in Matlab e non so come fare. Il primo vettore è un vettore colonna del tipo:
a=[1 1 1 2 2 2 3 3 3...480 480 480]'cioè un vettore che ripete per 3 volte 1, 2.. fino a 480.
il secondo vettore invece è sempre un vettore colonna che mette in fila tutte le riche di una matrice. Ad esempio se ho una matrice del tipo
A=[3 1 3;4 5 6;5 7 8]il vettore sarebbe del tipo:
b=[313456578]'
So che la procuderua consiste in un ciclo for ma non so come impostarlo.
Grazie per l'aiuto.
Risposte
Ciao e benvenut*. potresti fare i due cicli seguenti:
ES1:
ES2:
ES1:
arr = []; for i =1:480 arr = [arr; ones([3,1])*i]; end
ES2:
A=[3 1 3;4 5 6;5 7 8]; arr = []; for k = 1:size(A,1) arr = [arr A(k,:)]; end transpose(arr)
Ciao,
@cooper ti ha già risposto correttamente.
MatLab usa il più possibile la strategia copy-on-write per ottimizzare situazioni di questo tipo, quindi ha già delle routine fatte apposta per quello che ti serve. Ti consiglio di guardarne la documentazione
1)
2)
Un consiglio generale se usi MatLab è di cercare di evitare cicli for "C-style" quando possibile, poiché questi rallentano terribilmente l'esecuzione del programma.
@cooper ti ha già risposto correttamente.
MatLab usa il più possibile la strategia copy-on-write per ottimizzare situazioni di questo tipo, quindi ha già delle routine fatte apposta per quello che ti serve. Ti consiglio di guardarne la documentazione

1)
v = [1:480]; repelem(v,3)
2)
A=[3 1 3;4 5 6;5 7 8]; reshape(A.',1,[])'
Un consiglio generale se usi MatLab è di cercare di evitare cicli for "C-style" quando possibile, poiché questi rallentano terribilmente l'esecuzione del programma.
bello il primo comando, non l'avevo mai visto.
al reshape potevo invece anche pensarci esistesse anche in Matlab.....
al reshape potevo invece anche pensarci esistesse anche in Matlab.....
Sinceramente nemmeno io, non uso mai MatLab. Ma sapendo quanto vogliono evitare cicli for l'ho trovato googlando
