用MATLAB給圖像分塊處理
先說明一個錯誤:64*64的圖像分塊(每塊4*4)應該是256塊,不是16塊。
下面是程序
設A是64*64的圖像矩陣
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B就是要的矩陣,16行256列
%下面是說明
%大概的關係是這樣的,設A=
%A1 A17 … A241
%A2 A18 … A242
%∶ ∶ ∶
%A16 A19 … A256
%(這裏每個Ai都是4*4的矩陣塊)
%那麼B=
%B1 B2 B3 … B256
%每個Bi就是對應Ai的16*1列向量
%
%即假設Ai=
%a1 a5 a9 a13
%a2 a6 a10 a14
%a3 a7 a11 a15
%a4 a8 a12 a16
%
%那麼Bi=
%a1
%a2
%∶
%a16
在MATLAB中怎樣把一個矩陣等分成幾個維數相等的矩陣
在MATLAB中把一個矩陣等分成幾個維數相等的矩陣的方法:
利用reshape函數:在command window下輸入:doc reshape。
MATLAB簡介:
MATLAB是美國MathWorks公司出品的商業數學軟件,用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。
MATLAB是matrix&laboratory兩個詞的組合,意爲矩陣工廠(矩陣實驗室)。是由美國mathworks公司發佈的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易於使用的視窗環境中,爲科學研究、工程設計以及必須進行有效數值計算的衆多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。
matlab如何從一個矩陣中找到可逆的分塊矩陣
%假設你原有的矩陣是存在變量 in 中
a=nchoosek(1:20,16);%產生20各種取16個的組合,會有4845種,返回一個4845x16的矩陣
num=size(a,1);%num=4845
choose=true(num,1);
for ii=1:num
temp=in(a(ii,:),:);%取第ii行的組合,形成temp方陣
d=det(temp);%計算行列式
if d==0 %如果計入計算截斷誤差,可以用條件abs(d) choose(ii)=false; %標記行列式爲0的組合 end end chooseout=a(choose,:);%chooseout是nx16的矩陣,n爲符合條件的矩陣個數 %可用out=in(chooseout(n,:),:),獲得第n個符合條件的矩陣
以上就是使用MATLAB進行圖像分塊處理的詳細內容,更多請關注本站其它相關文章!