[問題] 執行時間:KLT vs 小波已回收
幫朋友代PO:
我做的是高頻譜影像壓縮
影像大小是200*200*224
大致上的方向
就是用小波轉換取代原先KLT在spectral domain上(224band)的應用
小波轉換和KLT的程式都沒有什麼大問題
但是在執行時間上卻出現了非常奇怪的結論
老闆說 理論上應該是小波比KLT快
但是程式跑出來 小波反而是比KLT慢很多
我高頻譜影像的KLT和小波轉換 (在spectral domain上) 程式碼各別如下:
KLT:
clc,clear
load original_image
tic
f=reshape(f,40000,224);
R=f'*f; % step1:求correlation matrix
[eigen_vector eigen_value tp1]=svd(R); % step2:對R做特徵分解 以求特徵向量
Y=eigen_vector.'*f'; % step3:線性轉換
toc
小波:
clc,clear
name='haar';
load original_image
tic
order=1;
f=reshape(f,40000,224);
total_pixel=40000;
column=224;
n=linspace(1,column,column);
[c l]=wavedec(n,order,name);
num_of_c=numel(c);
C=zeros(total_pixel,num_of_c); %預留記憶體空間給小波轉換後的結果來存放
for i=1:total_pixel
[C(i,:) L]=wavedec(f(i,:),order,name);
end
toc
老闆說 連 [eigen_vector eigen_value tp1]=svd(R); %對R做特徵分解 以求特徵向量
是KLT這個程式中 運算量最大的
但是小波的執行時間 竟然還輸KLT
可見得我的程式寫的不好
我老闆說就是因為我在小波程式的地方是用for迴圈寫才會這麼慢
要我把這個地方的迴圈向量化
迴圈向量化我不陌生 但是並不是所有類型的迴圈都是能夠向量化的
我覺得這個地方 應該是不能夠向量化
想請教一下幾點:
1.這個迴圈應該是不能向量化吧?
2.我在這邊跑的時間 如果是改成在「實際電路」的實現上 KLT的執行時間
是不是就會比小波慢?
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.206.122