1112 1

[问答] 请教matlab高手改进程序,多谢! [推广有奖]

  • 8关注
  • 2粉丝

讲师

33%

还不是VIP/贵宾

-

威望
0
论坛币
310 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
15111 点
帖子
218
精华
0
在线时间
379 小时
注册时间
2012-10-31
最后登录
2020-8-31

楼主
慧(会)幸福 发表于 2014-4-24 13:44:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以下是我的代码,图片中是我要编的内容,结果运行太慢或者根本运行不出来,注意这里的mu是多维的,请教高手帮忙改进,多谢了! 图中 f=log(1+lambda^T*(x_1-mu))+... ...log(1+lambda^T*(x_n - mu)) , T表示转置。
fig.jpg
  • function [logelr,lambda,grad,pelrmu1,pelrmu2]=EL(x,mu)
  • lambda=zeros(size(x,2),1); k=0; gamma=1; y1=0;y2=zeros(size(x,2),1);
  • y3=zeros(size(x,2),size(x,2));y4=zeros(size(x,2),1);
  • y5=zeros(size(x,2),size(x,2));y=1;
  • while (norm(y,2)>(10^-8))
  •     for i=1:size(x,1)
  •     [F1,F2,F3,F4,F5]=f(x(i,:)',mu,lambda);
  •     y1=y1+F1;
  •     y2=y2+F2;
  •     y3=y3+F3;
  •     y4=y4+F4;
  •     y5=y5+F5;
  •    end
  •   y=y3\y2;
  •   z1=0;
  •   delta=gamma*y;
  •   for i=1:size(x,1)
  •   z1=z1+ f(x(i,:)',mu,lambda-delta);
  •   end
  • while (z1< y1)
  •     gamma=0.5*gamma;
  •     delta=gamma*y;
  •     z1=0;
  •   for i=1:size(x,1)
  •   z1=z1+ f(x(i,:)',mu,lambda-delta);
  •   end
  • end
  • k=k+1;
  • lambda=lambda-delta;
  • gamma=1/sqrt(k+1);
  • end
  •   lambda;
  •   logelr=2*y1;
  •   grad=y2;
  •   pelrmu1=y4;
  •   pelrmu2=y5;

复制代码

其中,上述程序中的函数 f(和图片中的f 不是一回事)如下
  • function [F1,F2,F3,F4,F5]=f(x,mu,lambda)
  • w1=x-mu;
  • w2=1+lambda'*(x-mu);
  • F1=log(w2);
  • F2=w1/w2;
  • F3=-w1*w1'/(w2*w2);
  • F4=lambda/w2;
  • F5=-lambda*lambda'/w2*w2;
  • end

复制代码





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab Lab Atl function matlab 图片 程序

沙发
hyu9910 在职认证  发表于 2014-4-24 13:53:34
你可以打印出循环的中间结果自己检查的。 尤其开始的几步,都有希望手算,或者计算器算了你自己测试

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 17:39