声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 806|回复: 0

[编程技巧] 如何用lsqnonlin解决下面的问题

[复制链接]
发表于 2009-9-15 16:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
X的维数是50*50,k=7,

1. 首先随机生成k个1*k维的向量b1,b2,...,b7;
2. for i=1:50
    计算X(i,:)到bi(i=1:7)的投影长度的绝对值,并将最大值赋给l(i)
    end
3. L=exp(-l(1))^2+exp(-l(2))^2+...+exp(-l(50))^2
4.求当L最小时,向量b1,b2,...,b7的大小().

我写的代码如下:
X=load('SenSimtest.txt');
SenNum=size(SenSim,1);
k=floor(sqrt(SenNum));

B=randn(k); %生成k*k维随机矩阵,B矩阵的各行就是bi
UnitB_Nu=sqrt(sum(B.*B,2));
UnitB_Nu=UnitB_Nu*ones(1,k);% B中各行元素的平方和
UnitB=B./UnitB_Nu;  % UnitB为与B同方向的单位向量

for i=1:50
    for m=1:7
        templ(m)=abs(dot(X(i,:),UnitB(m,:)));    % 点xi在bm上的投影长度的绝对值
    end                                                               
    l(i)=max(templ);  
end                 %得出X的各行在b1,b2,...,b7上投影长度的最大值

使L=exp(-l(1))^2+exp(-l(2))^2+...+exp(-l(50))^2最小时,如何得到各个b1,b2,..,b7的值?这个肯定需要调用lsqnonlin函数,但我就不知道如何用lsqnonlin函数解决呢?希望各位大侠们帮帮小妹,谢谢!

SenSimtest.txt

39.16 KB, 下载次数: 0

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 04:14 , Processed in 0.065717 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表