[問題] 執行時間:KLT vs 小波已回收

看板MATLAB作者 (比一千個太陽還亮)時間15年前 (2010/10/21 00:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
幫朋友代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
文章代碼(AID): #1ClnX9cy (MATLAB)