まずエラーについて説明します。64*64 の画像ブロック (各ブロックは 4*4) は、16 ブロックではなく 256 ブロックである必要があります。
以下はプログラムです
A が 64*64 の画像行列であると仮定します。
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B は必要な行列です。16 行 256 列です。
%以下は説明です
%A=
とすると、おおよその関係は次のようになります。� A17 … A241
� A18 … A242
%∶ ∶ ∶
�6 A19 … A256
% (ここでの各 Ai は 4*4 行列ブロックです)
%B=
� B2 B3 … B256
%各 Bi は Ai
に対応する 16*1 列ベクトルです。%
%つまり、Ai=
と仮定します。� a5 a9 a13
� a6 a10 a14
� a7 a11 a15
� a8 a12 a16
%
%その後、Bi=
�
�
%:
�6
MATLAB で行列を同じ次元の複数の行列に分割する方法:
reshape 関数を使用します。コマンド ウィンドウに「doc reshape」と入力します。
MATLAB の概要:
MATLAB は、アメリカの MathWorks 社が製造する商用数学ソフトウェアです。アルゴリズム開発、データ視覚化、データ分析、数値計算に使用される高度な技術コンピューティング言語および対話型環境です。主に MATLAB と Simulink が含まれます。
MATLAB は、matrix&laboratory という 2 つの単語を組み合わせたもので、行列工場 (行列実験室) を意味します。アメリカのマスワークス社が主に科学計算、可視化、対話型プログラミングを目的としてリリースしたハイテクコンピューティング環境です。数値解析、行列計算、科学データの視覚化、非線形動的システムのモデリングとシミュレーションなどの多くの強力な機能を使いやすいウィンドウ環境に統合し、科学研究、工学設計、および実行する必要がある多くの科学分野を提供します。この分野は包括的なソリューションを提供し、従来の非対話型プログラミング言語 (C や Fortran など) の編集モードから大きく脱却し、今日の国際的な科学計算ソフトウェアの高度なレベルを表しています。
% 元の行列が
の変数に存在すると仮定します。a=nchoosek(1:20,16);% は 16 の異なる組み合わせを 20 個生成し、4845 種類になり、4845x16 の行列を返します
num=サイズ(a,1);%num=4845
choose=true(num,1);
for ii=1:num
temp=in(a(ii,:),:);% は行 ii の組み合わせを取得して一時正方行列を形成します
d=det(temp);%行列式を計算
if d==0 %切り捨て誤差が計算に含まれる場合は、条件 abs(d) choose(ii)=false; % は、行列式が 0 chooseout=a(choose,:);%chooseout は nx16 行列、n は条件を満たす行列の数です % 条件を満たす n 番目の行列を取得するには、out=in(chooseout(n,:),:) を使用できます。
以上がMATLAB を使用した画像ブロック処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。