Hvordan får jeg de to sidste dimensioner af en N-D array som en 2D-array?

Jeg har en 3D-array i MATLAB, med size(myArray) = [100 100 50]. Nu, jeg vil lide at få et bestemt lag, angivet ved et indeks i første dimension, i form af en 2D-matrix.
Jeg prøvede myMatrix = myArray(myIndex,:,:);, men det giver mig en 3D-array med size(myMatrix) = [1 100 50].

Hvordan fortæller jeg MATLAB at jeg ikke er interesseret i den første dimension (da der kun er ét lag), så det kan forenkle matrix?

Note: jeg bliver nødt til at gøre dette med det andet indeks også, rendering size(myMatrix) = [100 1 50] i stedet for den ønskede [100 50]. En løsning, der bør gælde både for tilfælde, og helst til den tredje dimension.

OriginalForfatteren Tomas Aschan | 2011-04-19

3 svar

  1. 14

    Bruge squeeze funktion, som fjerner singleton dimensioner.

    Eksempel:

    A=randn(4,50,100);
    B=squeeze(A(1,:,:));
    size(B)
    
    ans =
    
        50   100

    Dette er generaliseret, og du behøver ikke at bekymre dig om, hvilken dimension du indeksering sammen. Alle singleton dimensioner er presset ud.

    OriginalForfatteren abcd

  2. 2
    reshape(myArray(myIndex,:,:),[100,50])
    Genial! =) SÅ fællesskabet er så hurtigt, som sædvanlig.

    OriginalForfatteren fdermishin

  3. 0

    squeeze, reshape og permute er nok de tre mest vigtige funktioner, når der beskæftiger sig med N-D-matricer. Bare for at have et eksempel på brug af den tredje funktion:

    A=randn(4,50,100);
    B=permute(A(1,:,:),[2,3,1])

    OriginalForfatteren Daniel

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *