2009-11-24 11 views

Antwort

12

Ich weiß nicht, von einer multidimensionalen Art und Weise es automatisch zu tun, aber Matlab Indizierung ist gut genug, wenn Sie glücklich sind sie für jede Dimension zu spezifizieren:

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

+1: Irgendwie habe ich vergessen, die 'end'-Syntax in meine Antwort aufzunehmen. Guter Fang. ;) – gnovice

5

Dies sollte für Ihr spezielles Beispiel arbeiten:

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

und allgemeiner:

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

Für weitere Informationen über die Indizierung in MATLAB können Sie here die Dokumentation überprüfen.

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 und willkommen bei Stack Overflow! Ihre Antwort könnte noch nützlicher sein, wenn Sie in wenigen Worten erklären, was Ihr Code tut. Fühlen Sie sich frei, den Bearbeitungslink unter Ihrer Frage zu verwenden ... –

1

gefunden das heute. A ist die ursprüngliche Matrix, die jedes s-Element erfasst.

Es wird die Matrix vertikal abgetastet, transponiert, dann die orthogonale Richtung abgetastet und dann zurückversetzt.

Verwandte Themen