17/07/2023
MATLAB er et kraftfuldt sprog og interaktivt miljø, der anvendes af millioner af ingeniører og forskere til teknisk databehandling. En af MATLABs kernestyrker er dets evne til at arbejde med matricer og arrays. Mens de fleste brugere er bekendt med 2D-matricer (rækker og kolonner), åbner verdenen af multidimensionelle arrays, især 3D-matricer, op for en lang række nye muligheder for datarepræsentation og analyse, fra medicinsk billedbehandling til komplekse simuleringer. Denne artikel vil guide dig igennem alt, hvad du behøver at vide for at oprette, manipulere og visualisere 3D-matricer i MATLAB.

Hvad er en 3D-matrix?
For at forstå en 3D-matrix er det lettest at starte med en 2D-matrix. En 2D-matrix er en rektangulær tabel af tal, organiseret i rækker og kolonner. Hvert element identificeres ved to indekser: et rækkeindeks og et kolonneindeks, f.eks. A(2,3), som refererer til elementet i anden række og tredje kolonne.
En 3D-matrix er en udvidelse af dette koncept. Man kan forestille sig det som en stak af 2D-matricer lagt oven på hinanden, ligesom siderne i en bog. Ud over række- og kolonneindekser har hvert element nu et tredje indeks, der repræsenterer 'siden' eller 'laget'. Et element i en 3D-matrix identificeres således ved tre indekser: A(række, kolonne, side). For eksempel repræsenterer A(2,1,1) elementet i anden række, første kolonne på den første side.
Oprettelse af en 3D-matrix i MATLAB
Der er flere måder at oprette en 3D-matrix på i MATLAB. De mest almindelige metoder involverer at udvide en eksisterende 2D-matrix eller at bruge specialiserede funktioner.
Metode 1: Udvidelse af en 2D-matrix
Den mest intuitive måde at skabe en 3D-matrix er ved først at definere en 2D-matrix, som vil udgøre den første 'side', og derefter tilføje flere sider.
Lad os starte med at oprette en 3x3-matrix, som bliver den første side:
A = [11 2 7; 4 1 0; 7 1 5]Nu er A en 3x3 2D-matrix. For at gøre den til en 3D-matrix tilføjer vi en anden side. Dette gøres ved at tildele en ny 3x3-matrix til det andet lag i den tredje dimension:
A(:, :, 2) = [1 2 5; 4 4 6; 2 8 1]Nu er A en 3x3x2 matrix. MATLAB vil vise outputtet som følger:
A(:,:,1) = 11 2 7 4 1 0 7 1 5 A(:,:,2) = 1 2 5 4 4 6 2 8 1Du kan fortsætte med at tilføje flere sider ved at øge sideindekset, f.eks. A(:, :, 3) = [...].
Metode 2: Brug af 'cat'-funktionen
En mere programmatisk og fleksibel måde at bygge multidimensionelle arrays på er ved at bruge funktionen cat (concatenate). Denne funktion sammenkæder eksisterende arrays langs en specificeret dimension.
For at oprette en 3D-matrix sammenkæder vi 2D-matricer langs den tredje dimension. Det første argument til cat er den dimension, du vil sammenkæde langs. For 3D-matricer, hvor vi stabler 'sider', er dette dimension 3.
Lad os oprette to 2D-matricer først:
M1 = [1 2 3; 4 5 6]; M2 = [7 8 9; 10 11 12];Nu kan vi kombinere dem til en 2x3x2 matrix:
M3D = cat(3, M1, M2)Resultatet vil være en 3D-matrix, hvor M1 er den første side og M2 er den anden.
Adgang til og manipulation af elementer
Adgang til data i en 3D-matrix er ligetil. Du bruger blot de tre indekser til at specificere det ønskede element. For at få fat i tallet 0 fra vores første eksempelmatrix A, som er i anden række, tredje kolonne på første side, skriver vi:
element = A(2, 3, 1);MATLAB tilbyder også kraftfulde funktioner til at omforme og manipulere multidimensionelle arrays.
Funktionen 'reshape'
Funktionen reshape ændrer dimensionerne af en matrix uden at ændre rækkefølgen af elementerne (som læses kolonnevist). Dette er især nyttigt, når data skal omstruktureres til analyse eller visualisering.
Forestil dig, at du har en 3x4x2 matrix (24 elementer i alt) og ønsker at omdanne den til en 6x4 2D-matrix.
data3D = randi(100, [3, 4, 2]); % Opretter en 3x4x2 matrix med tilfældige heltal data2D = reshape(data3D, [6, 4]);reshape tager elementerne fra data3D kolonne for kolonne, side for side, og placerer dem i den nye 6x4-struktur.

Funktionen 'permute'
Mens reshape ændrer dimensionernes størrelse, bruges permute til at ombytte eller omarrangere selve dimensionerne. Dette er ekstremt nyttigt, hvis du f.eks. vil bytte om på rækker og kolonner, eller hvis du vil gøre 'side'-dimensionen til den primære dimension.
Argumentet til permute er en vektor, der specificerer den nye rækkefølge af dimensionerne. Hvis vi har en matrix P med dimensionerne (række, kolonne, side), og vi kalder permute(P, [2 1 3]), betyder det, at den nye matrix vil have dimensionerne (kolonne, række, side). Dimension 1 og 2 er byttet om.
Eksempel:
P(:,:,1) = [3 5; 1 5]; P(:,:,2) = [0 1; 6 7]; M = permute(P, [2 1 3]);Resultatet M vil have rækker og kolonner byttet om for hver side.
Sammenligningstabel for manipulationsfunktioner
| Funktion | Formål | Hvordan det virker |
|---|---|---|
reshape(A, [d1 d2...]) | Ændrer matrixens dimensioner (f.eks. fra 3D til 2D). | Beholder elementernes rækkefølge (kolonnevis) men omfordeler dem i en ny form. Antallet af elementer skal være det samme. |
permute(A, [dim_order]) | Omarrangerer (bytter om på) matrixens dimensioner. | Ændrer hvilken dimension der er rækker, kolonner, sider osv. Ændrer ikke størrelsen af dimensionerne. |
Visualisering af 3D-matricer
Den virkelige udfordring og styrke ved at arbejde med 3D-data er visualisering. Hvordan viser man data, der har en rumlig udstrækning? MATLAB har flere funktioner designet til netop dette formål.
Slice-funktion
Funktionen slice er ideel til at se 'snit' af dine data langs akserne. Du kan vise snit af dit 3D-volumen langs x-, y- og z-planerne. Dette er især nyttigt til medicinske data som f.eks. MR-scanninger.
[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2); v = x .* exp(-x.^2 - y.^2 - z.^2); slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2]);Isosurface-funktion
isosurface bruges til at skabe en overflade, der repræsenterer punkter med en konstant værdi (en isoværdi) i dit 3D-datasæt. Dette er perfekt til at visualisere former og strukturer, der er skjult inde i data, f.eks. at visualisere en knogle fra en CT-scanning.
[x,y,z,v] = flow; p = patch(isosurface(x,y,z,v,-3)); isocolors(x,y,z,v,p) view(3);Scatter3-funktion
Hvis dine 3D-data består af individuelle punkter i et rum, er scatter3 den rette funktion. Den plotter hvert punkt som en markør i et 3D-koordinatsystem. Du kan også variere farven og størrelsen på markørerne for at repræsentere en fjerde eller femte dimension af data.
z = 1:100; x = z .* sin(z/5); y = z .* cos(z/5); c = z; % Farve baseret på z-værdien scatter3(x, y, z, 50, c, 'filled');Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen på en 2D- og en 3D-matrix?
En 2D-matrix har to dimensioner: rækker og kolonner. Den kan ses som et regneark. En 3D-matrix tilføjer en tredje dimension, 'sider' eller 'lag', og kan ses som en stak af regneark. Elementer i en 2D-matrix tilgås med to indekser (række, kolonne), mens elementer i en 3D-matrix kræver tre indekser (række, kolonne, side).
Kan jeg have matricer med mere end tre dimensioner i MATLAB?
Ja, MATLAB understøtter N-dimensionelle arrays, hvilket betyder, at du kan have matricer med fire, fem eller endnu flere dimensioner. Koncepterne for oprettelse (f.eks. med `cat`) og manipulation (`reshape`, `permute`) gælder også for disse højere dimensionelle arrays.
Hvordan finder jeg størrelsen på en 3D-matrix?
Du kan bruge funktionen size(). For en 3D-matrix A vil size(A) returnere en vektor med tre elementer, der repræsenterer antallet af rækker, kolonner og sider. For eksempel [3 3 2].
Hvilken visualiseringsfunktion er bedst?
Det afhænger helt af dine data og hvad du vil vise. Brug slice til at inspicere indre snit (som en læge ser på en scanning), isosurface til at udtrække og vise specifikke former (som at finde en tumor), og scatter3 til at vise individuelle datapunkter i et rum.
At mestre 3D-matricer i MATLAB åbner døren til at arbejde med mere komplekse og virkelighedstro datasæt. Ved at forstå, hvordan man opretter, manipulerer og effektivt visualiserer disse datastrukturer, kan du udføre mere avanceret analyse og få dybere indsigt i dine data.
Hvis du vil læse andre artikler, der ligner Guide til 3D-matricer og visualisering i MATLAB, kan du besøge kategorien Teknologi.
