Dire che mi viene assegnato un vettore di riga simmetrico con una lunghezza dispari in cui ogni elemento è più piccolo del successivo nella prima metà del vettore e ogni elemento è più grande di quello successivo nel secondo la metà e l'elemento centrale è il più grande. (ad esempio [1 2 3 2 1]
o [10 20 50 20 10]
).Creare una matrice "piramide"
Voglio creare una matrice quadrata in cui questo vettore riga è la riga centrale e il vettore colonna equivalente (v'
) è la sua colonna centrale e ogni riga o colonna è una versione ridotta del vettore specificato in base all'elemento centrale in questa riga o colonna. E quando non ci sono più "elementi originali", inseriamo 0
.
Esempi:
se v = [1 2 3 2 1]
otteniamo
0 0 1 0 0
0 1 2 1 0
1 2 3 2 1
0 1 2 1 0
0 0 1 0 0
se v = [3 5 3]
otteniamo
0 3 0
3 5 3
0 3 0
Quello che ho fatto finora: sono riuscito a creare una matrice con v
come la fila centrale e v'
come colonna centrale con questo codice che ho scritto:
ma si è bloccato con l'assegnazione degli altri valori.
@Adrian e @AndrasDeak: la funzione 'hankel' usa' bsxfun' internamente. – horchler
Oh no! Il modo in cui sto usando 'bsxfun' non è simile a come' hankel' è implementato usando 'bsxfun'. AFAIK hankel ha' bsxfun (@ plus'. – Divakar