Frage

Ich habe eine Matrix in MATLAB, von dem ich jeden anderen Eintrag probieren möchten:

a =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16

Und ich will:

result =

     1     9    
     3    11    

Wie kann ich dies für Schleife ohne eine tun?

War es hilfreich?

Lösung

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)

Andere Tipps

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 die Dokumentation überprüfen hier .

Ich fand das heute. A ist die ursprüngliche Matrix, jedes s Element abgetastet wird.

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

Es Abwärts Proben die Matrix vertikal transponiert, dann tastet die orthogonale Richtung, dann transponiert zurück.

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top