|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。8 u6 g$ H) `4 S# X9 p% Z; u
files=dir('*.mat');( H$ o {9 V) s2 O* q/ x& K
X = [X_src',X_tar'];
2 ?+ V7 T2 I& R) Q) U2 H( p9 U/ x X = X*diag(sparse(1./sqrt(sum(X.^2))));5 Q; H. Z, D2 @6 b
[m,n] = size(X);
% U; [2 J: u& I0 K/ q$ ^ ns = size(X_src,1);
$ a e, n, Z! k1 |& G nt = size(X_tar,1);
$ w( G0 `/ e5 H) ^, H0 Z5 q e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];
: x6 v0 |: Q0 @ M = e * e';; ], ]. b* } s; k! I4 W) f D7 {
M = M / norm(M,'fro');
2 m* L4 ?: l7 d* n H = eye(n)-1/(n)*ones(n,n);
# V( S3 T' W8 h$ I ` if strcmp(kernel_type,'primal')
2 |$ a: Y# Y- |5 i5 q [A,~] = eigs(X*M*X'+lambda*eye(m),X*H*X',dim,'SM');. [; \5 p' x( J+ v7 W( G7 A& L9 ^
Z = A' * X;& Q9 [/ U) K, h. Y
Z = Z * diag(sparse(1./sqrt(sum(Z.^2))));
4 c9 F6 y% o$ V1 e+ r/ E X_src_new = Z(:,1:ns)';
9 p& ^5 ]# V( J& N6 M2 O* U; x X_tar_new = Z(:,ns+1:end)'; t/ H! ~7 f; c! M; F6 e" L( n1 ]8 ~! Z6 K- B
else2 o# n# |! w! b( Y
K = TCA_kernel(kernel_type,X,[],gamma);- \; n' Y8 w" c8 @' p
[A,~] = eigs(K*M*K'+lambda*eye(n),K*H*K',dim,'SM');
- L$ O6 a% }3 \) C( t; u8 M Z = A' * K;
0 h, l* F- r7 u- C, y: a Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
?9 z3 Y% y0 E! Q: H6 {2 F3 f: w X_src_new = Z(:,1:ns)';
: ?5 L! J1 w- v: o3 o7 B% H2 k X_tar_new = Z(:,ns+1:end)';0 K" O8 g# Y+ I# q
end5 {: C" m. O% E$ p. {6 T
end
' m2 N9 k3 s. ?# ]- Z; i7 x# U( u0 O
中的X = X*diag(sparse(1./sqrt(sum(X.^2))));这一行代码报错,说未定义与 'struct' 类型的输入参数相对应的函数 'power'。这里的X是一个1x2的结构体,是不是结构体代入power函数的格式是错的?请教大神,非常感谢!
! g' N9 {& {5 l2 T0 \, d |
|