马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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函数解决呢?希望各位大侠们帮帮小妹,谢谢! |