yangcai 发表于 2009-9-15 16:34

如何用lsqnonlin解决下面的问题

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函数解决呢?希望各位大侠们帮帮小妹,谢谢!
页: [1]
查看完整版本: 如何用lsqnonlin解决下面的问题