Lassen Sie mich zunächst einen Fehler erklären: Die 64*64 Bildblöcke (jeder Block ist 4*4) sollten 256 Blöcke sein, nicht 16 Blöcke.
Das Folgende ist das Programm
Angenommen, A ist eine 64*64-Bildmatrix
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B ist die gewünschte Matrix, 16 Zeilen und 256 Spalten
%Hier sind die Anweisungen
%Die ungefähre Beziehung ist wie folgt, vorausgesetzt A=
%A1 A17 … A241
%A2 A18 … A242
%∶ ∶ ∶
%A16 A19 … A256
% (Jedes Ai hier ist ein 4*4-Matrixblock)
%Dann B=
%B1 B2 B3 … B256
%Jedes Bi ist ein 16*1-Spaltenvektor, der Ai entspricht
%
% bedeutet die Annahme von Ai=
%a1 a5 a9 a13
%a2 a6 a10 a14
%a3 a7 a11 a15
%a4 a8 a12 a16
%
% Dann Bi=
%a1
%a2
%∶
%a16
So teilen Sie eine Matrix in MATLAB in mehrere Matrizen mit gleichen Abmessungen auf:
Verwenden Sie die Reshape-Funktion: Geben Sie im Befehlsfenster Folgendes ein: doc reshape.
MATLAB-Einführung:
MATLAB ist eine kommerzielle Mathematiksoftware des amerikanischen Unternehmens MathWorks. Es handelt sich um eine fortschrittliche technische Computersprache und interaktive Umgebung, die für die Algorithmenentwicklung, Datenvisualisierung, Datenanalyse und numerische Berechnungen verwendet wird.
MATLAB ist eine Kombination der beiden Wörter Matrix&Labor, was Matrixfabrik (Matrixlabor) bedeutet. Es handelt sich um eine High-Tech-Computerumgebung, die von der amerikanischen Firma Mathworks hauptsächlich für wissenschaftliches Rechnen, Visualisieren und interaktive Programmierung entwickelt wurde. Es integriert viele leistungsstarke Funktionen wie numerische Analyse, Matrixberechnungen, wissenschaftliche Datenvisualisierung sowie Modellierung und Simulation nichtlinearer dynamischer Systeme in einer benutzerfreundlichen Fensterumgebung und bietet wissenschaftliche Forschung, technisches Design und viele wissenschaftliche Bereiche, die durchgeführt werden müssen Effektive numerische Berechnungen bieten eine umfassende Lösung und lösen sich weitgehend vom Bearbeitungsmodus traditioneller nicht interaktiver Programmiersprachen (wie C und Fortran) und repräsentieren das fortgeschrittene Niveau der heutigen internationalen wissenschaftlichen Computersoftware.
existiert
a=nchoosek(1:20,16);% generiert 20 verschiedene Kombinationen von 16, es gibt 4845 Arten und gibt eine 4845x16-Matrix zurücknum=size(a,1);%num=4845
choose=true(num,1);
für ii=1:num
temp=in(a(ii,:),:);% Nimm die Kombination von Zeile ii, um die temporäre Quadratmatrix zu bilden
d=det(temp);% Determinante berechnen
if d==0 % Wenn der Kürzungsfehler in die Berechnung einbezogen wird, kann er anhand der Bedingung abs(d)
Ende
Ende
chooseout=a(choose,:);%chooseout ist eine Matrix von nx16, n ist die Anzahl der Matrizen, die die Bedingungen erfüllen
% kann mit out=in(chooseout(n,:),:) verwendet werden, um die n-te Matrix zu erhalten, die die Bedingungen erfüllt
Das obige ist der detaillierte Inhalt vonBildblockverarbeitung mit MATLAB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!