匿名用户
1级
2013-08-12 回答
先建立函数m文件
function K=core_matrix(A,rbf_var)
[m,n]=size(A);
for i=1:m
for j=1:n
K(j,i) = exp(-norm(A(i,:)-A(j,:))^2/rbf_var);
end
end
主窗口可以这样来计算
>> A=[1,2,3,4;5,6,7,8;9,3,5,7;8,6,4,2]
A =
1 2 3 4
5 6 7 8
9 3 5 7
8 6 4 2
>> r=core_matrix(A,0.5) %当rbf_var=0.5时
r =
1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 1.0000
追问:
你好,我刚给你发了个信件 ,看下吧。主要这个核函数的参数值rbf-var 对于我来说是未知的,我就是通过相似性度量求它的。你给出的r是?当rbf_var=0.5时 ,0.5 是经验值么? 太谢谢帮助 小女子不胜感激
追答:
重新建立了函数求rbf_var
function [rbf_var,fval]=core_matrix(A)
[m,n]=size(A);
B_G=eye(m); %理想核函数的Gram矩阵
syms rv;
for i=1:m
for j=1:m
K(j,i) = exp(-norm(A(i,:)-A(j,:))^2/rv);
end
end
D=K-B_G;
Dist=sum(sum(D.*D));
Fun_Dist=eval(['@(rv)',vectorize(char(Dist)),';']);
[rbf_var,fval]=fminsearch(Fun_Dist,1);
主窗口中
>> A=[1,2,3,4;5,6,7,8;9,3,5,7;8,6,4,2]
A =
1 2 3 4
5 6 7 8
9 3 5 7
8 6 4 2
>> [r,f]=core_matrix(A)
r =
0.0500
f =
0