2009-11-24 4 views

risposta

12

Io non conosco un modo multidimensionale a farlo automaticamente, ma l'indicizzazione di MATLAB è abbastanza buono se sei felice di specificarlo per ogni dimensione:

a(1:2:end,1:2:end) 
+0

+1: In qualche modo ho dimenticato di includere la sintassi 'end' nella mia risposta. Buona pesca. ;) – gnovice

5

Questo dovrebbe funzionare per il vostro esempio specifico:

result = a([1 3],[1 3]); 

e più in generale:

result = a(1:2:size(a,1),1:2:size(a,2)); 

Per ulteriori dettagli sulle indicizzazione in MATLAB, è possibile controllare la documentazione here.

1
samples_x = floor(linspace(1, size(a,1), new_Nx)); 
samples_y = floor(linspace(1, size(a,2), new_Ny)); 
new_a = a(samples_x,samples_y) 
+0

+1 e benvenuto su Stack Overflow! La tua risposta potrebbe essere ancora più utile se spiegassi in poche parole cosa fa il tuo codice. Sentiti libero di usare il link di modifica sotto la tua domanda ... –

1

ho trovato questo oggi A è la matrice originale, campionata ogni elemento s.

Adown=downsample(downsample(A,s)',s)' 

Si down-campioni matrice verticalmente, traspone, quindi i campioni direzione ortogonale, quindi traspone indietro.