EDA365电子论坛网

标题: 最近刚刚学习matlab,在做一个关于迁移学习tca的代码。 [打印本页]

作者: needham    时间: 2020-6-12 13:51
标题: 最近刚刚学习matlab,在做一个关于迁移学习tca的代码。
最近刚刚学习matlab,在做一个关于迁移学习tca的代码。  e5 ]  A6 `8 S6 r/ W" X
        files=dir('*.mat');7 d9 k4 j1 w2 O% {4 P& o, x
        X = [X_src',X_tar'];4 e0 y6 z" ~3 G/ M
        X = X*diag(sparse(1./sqrt(sum(X.^2))));6 u# X6 T% T- ]3 B2 k1 n! ?4 |6 q
        [m,n] = size(X);: J1 {& G' m" c4 ~1 E7 J
        ns = size(X_src,1);# u0 G8 K  f) T$ L7 h
        nt = size(X_tar,1);
! X% }$ f9 h9 ]: J        e = [1/ns*ones(ns,1);-1/nt*ones(nt,1)];3 l4 e# B+ b4 e+ V
        M = e * e';2 J9 S$ t6 r+ h
        M = M / norm(M,'fro');( A# L# E1 J2 |4 Q' l- S; M
        H = eye(n)-1/(n)*ones(n,n);. f9 V/ T3 K" R
        if strcmp(kernel_type,'primal')
( z# w$ I/ k: s1 S* A, O, F, O$ Y0 w                [A,~] = eigs(X*M*X'+lambda*eye(m),X*H*X',dim,'SM');$ i8 s9 `0 w- a$ b6 V, p
                Z = A' * X;0 Z3 A7 z( h# P9 t$ ]
        Z = Z * diag(sparse(1./sqrt(sum(Z.^2))));! a: g5 g1 C1 w1 @! X; W$ c- U  w
                X_src_new = Z(:,1:ns)';. Y  A9 q; u( G6 _
                X_tar_new = Z(:,ns+1:end)';
$ T% v0 Q1 z- W+ {' w        else
/ B( n8 z, B9 A1 w4 Z$ @            K = TCA_kernel(kernel_type,X,[],gamma);7 A# l" N; e  g- O7 P1 f" {
            [A,~] = eigs(K*M*K'+lambda*eye(n),K*H*K',dim,'SM');8 _: f7 u1 x) ?( F
            Z = A' * K;
0 ^9 f0 E+ ?/ P, ^9 E        Z = Z*diag(sparse(1./sqrt(sum(Z.^2))));
  N7 U* v2 R- Q        X_src_new = Z(:,1:ns)';
' \& p5 B+ |9 Y: Z8 P: B                X_tar_new = Z(:,ns+1:end)';
" {: _4 Z8 Z+ j7 \5 N  r3 I        end
: U% ?+ O+ J" X: ^  rend" A7 {4 H  u. J( x; B

' v% s- J7 V7 F% P1 j中的X = X*diag(sparse(1./sqrt(sum(X.^2))));这一行代码报错,说未定义与 'struct' 类型的输入参数相对应的函数 'power'。这里的X是一个1x2的结构体,是不是结构体代入power函数的格式是错的?请教大神,非常感谢!
# I4 t! _4 W/ i. m3 j* @0 @
作者: panphp    时间: 2020-6-12 14:27
你的X是结构体,不能采用.^2这个计算(也就是power函数),你得先将你的结构体中的数据存储到矩阵中,才能运算。
作者: artic    时间: 2020-6-13 18:14
楼主可以上传X结构的体的mat文件。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2