| 查看: 867 | 回复: 1 | ||
[求助]
有关非负矩阵的MATLAB程序优化
|
|
亲们:我编了一个有关非负矩阵分解算法的MATLAB程序,但是与别人的实验结果相比,迭代次数和时间比原始数据差很多,但是我不会优化程序,麻烦大神们给指导指导,非常感谢 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;%计算W的梯度; projgrad = norm(gradW(gradW<0 | W>0),'fro');%W的投影范数; if projgrad<tol;%终止条件的判断; break; end if k==1; alpha=1;%初始alpha end Z=max(0,W-gradW/L);%由构造的严格凸二次函数求出的封闭解; 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),%判断目标函数下降; mk=m;%满足使的目标函数下降的最小正整数; break; end m=m+1; end lamda=row^mk;%更新lamda用于产生新的迭代点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;%最大迭代次数 tic [W,iter_W,gradW]=QRPBB(V,Winit,H,maxiter,tol); toc 希望可以教教我具体怎样优化一个程序,才能使得它的迭代次数和时间降低,谢谢!! |
» 猜你喜欢
AI论文写作工具:是科研加速器还是学术作弊器?
已经有5人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有7人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有5人回复
2025冷门绝学什么时候出结果
已经有7人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
请问大侠matlab的的相关程序
已经有4人回复
for循环语句的加速优化求助!
已经有8人回复
Matlab心得及学习方法(不断更新)
已经有26人回复
MATLAB 程序优化
已经有4人回复
有个matlab程序,但是运行不下来,求高手
已经有23人回复
使用拉格朗日优化,但Matlab 运行不出结果来
已经有7人回复
Fortran 求解复数矩阵SVD时,用到cgesvd,结果与matlab不同,为什么?
已经有15人回复
求教matlab线性优化求最小值的问题
已经有7人回复
请教MATLAB中的LMI求解问题,急!!!
已经有7人回复
求助:遗传算法的matlab编程求解资源优化问题
已经有7人回复
求助:资源优化问题的遗传算法matlab编程
已经有5人回复
Matlab代码优化
已经有3人回复
matlab程序调试
已经有7人回复
求助一个matlab关于分类讨论的问题
已经有9人回复
matlab线性矩阵不等式求解做优化问题
已经有10人回复
图规整的非负矩阵分解:Graph Regularized Nonnegative Matrix Factorization
已经有19人回复
【求助】matlab 二次规划的优化的问题
已经有4人回复
【求助】多目标pso算法的MATLAB程序
已经有3人回复

2楼2018-02-06 11:06:14













回复此楼