| 2 | 1/1 | 返回列表 |
| 查看: 901 | 回復(fù): 1 | ||
[求助]
有關(guān)非負(fù)矩陣的MATLAB程序優(yōu)化
|
|
親們:我編了一個有關(guān)非負(fù)矩陣分解算法的MATLAB程序,但是與別人的實(shí)驗(yàn)結(jié)果相比,迭代次數(shù)和時間比原始數(shù)據(jù)差很多,但是我不會優(yōu)化程序,麻煩大神們給指導(dǎo)指導(dǎo),非常感謝 function [W,iter_W,gradW]=QRPBB(V,Winit,H,maxiter,tol) W=Winit; alpha_max=1.0e+20; alpha_min=1.0e-20; M=5; row=0.25; gama=1.0e-4; HHt=H*H'; VHt=V*H'; L=norm(HHt); delta0=-sum(sum(H.*(W'*V))); dQd0=sum(sum((H.*(W'*W*H)))); f0=delta0+0.5*dQd0; for k=1:maxiter; gradW=W*HHt-VHt;%計(jì)算W的梯度; projgrad = norm(gradW(gradW<0 | W>0),'fro');%W的投影范數(shù); if projgrad<tol;%終止條件的判斷; break; end if k==1; alpha=1;%初始alpha end Z=max(0,W-gradW/L);%由構(gòu)造的嚴(yán)格凸二次函數(shù)求出的封閉解; gradZ=Z*HHt-VHt; Zn=max(0,Z-alpha*gradZ);%為定義方向而定義的一個中間變量; D=Zn-Z;%迭代方向; delta=sum(sum(D.*gradZ)); dQd=sum(sum((H.*(Z'*Z*H)))); %搜步長 if k==1; func(k)=f0 ; else func(k)=fn; end jj=min(k-1,M-1); fmax=max(func(k-jj:k)); m=0;maxm=20;mk=0; while (m<maxm); fn=func(k)+row^m*delta+0.5*row^(2*m)*dQd; if(fn<=fmax+gama*row^m*delta),%判斷目標(biāo)函數(shù)下降; mk=m;%滿足使的目標(biāo)函數(shù)下降的最小正整數(shù); break; end m=m+1; end lamda=row^mk;%更新lamda用于產(chǎn)生新的迭代點(diǎn)W; %迭代格式 W=Z+lamda*D; %BB步更新方向D; s=D; y=D*HHt; b=sum(sum(s.*s)); c=sum(sum(s.*y)); alphaBB=b/c; if (c<=0), alpha=alpha_max; else alpha=min(alpha_max,max(alpha_min,alphaBB)); end iter_W=k; end if k==maxiter, fprintf('Max k in QRPBB\n'); end 測試問題 clear clc l= 100; n = 200; r =15; % V = rand(;l,n); Winit= rand(l,r); Hinit= rand(r,n); V = abs(rand(l,r))*abs(rand(r,n)); tol=1.e-7; maxtime=1000; maxiter=5000;%最大迭代次數(shù) tic [W,iter_W,gradW]=QRPBB(V,Winit,H,maxiter,tol); toc 希望可以教教我具體怎樣優(yōu)化一個程序,才能使得它的迭代次數(shù)和時間降低,謝謝! |

木蟲 (小有名氣)
| 2 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 化學(xué)調(diào)劑 +4 | yzysaa 2026-03-21 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 278求調(diào)劑 +9 | 煙火先于春 2026-03-17 | 9/450 |
|
|
[考研] 0703化學(xué)297求調(diào)劑 +3 | Daisy☆ 2026-03-20 | 3/150 |
|
|
[考研] 277材料科學(xué)與工程080500求調(diào)劑 +6 | 自由煎餅果子 2026-03-16 | 6/300 |
|
|
[考研] 能源材料化學(xué)課題組招收碩士研究生8-10名 +5 | 脫穎而出 2026-03-16 | 15/750 |
|
|
[考研] 南昌大學(xué)材料專碩311分求調(diào)劑 +6 | 77chaselx 2026-03-20 | 6/300 |
|
|
[考研] 機(jī)械專碩299求調(diào)劑至材料 +3 | kkcoco25 2026-03-16 | 4/200 |
|
|
[考研] 304求調(diào)劑 +7 | 司空. 2026-03-18 | 7/350 |
|
|
[考研] 324求調(diào)劑 +5 | lucky呀呀呀鴨 2026-03-20 | 5/250 |
|
|
[考研] 材料學(xué)碩297已過四六級求調(diào)劑推薦 +11 | adaie 2026-03-19 | 11/550 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 一志愿吉林大學(xué)材料學(xué)碩321求調(diào)劑 +11 | Ymlll 2026-03-18 | 15/750 |
|
|
[考研] 一志愿福大288有機(jī)化學(xué),求調(diào)劑 +3 | 小木蟲200408204 2026-03-18 | 3/150 |
|
|
[考研] 材料考研調(diào)劑 +3 | xwt。 2026-03-19 | 3/150 |
|
|
[考研] 材料工程專碩調(diào)劑 +5 | 204818@lcx 2026-03-17 | 6/300 |
|
|
[考研] 收復(fù)試調(diào)劑生 +4 | 雨后秋荷 2026-03-18 | 4/200 |
|
|
[考研] 0703化學(xué)336分求調(diào)劑 +6 | zbzihdhd 2026-03-15 | 7/350 |
|
|
[考博] 26博士申請 +3 | 1042136743 2026-03-17 | 3/150 |
|
|
[考研] 0856求調(diào)劑 +3 | 劉夢微 2026-03-15 | 3/150 |
|
|
[考研] 085601材料工程315分求調(diào)劑 +3 | yang_0104 2026-03-15 | 3/150 |
|