亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rbf_rt_1.m

?? RBF算法matlab工具箱,里面有詳細的說明文檔.
?? M
字號:
function [C, R, w, info, conf] = rbf_rt_1(X, y, conf)%% Hybrid radial basis function network and regression tree.%% Solves a regression problem with inputs X and outputs y using a% regression tree and an RBF network selected using tree-guided% forward and backward subset selection. Returns the hidden unit% centres C, their radii R, the hidden-to-output weights w, some% additional information info and a fully instantiated configuration% structure conf.%% For further details of the function see:%%  'Matlab Routines for RBF Networks', 1999.%% For a description of the algorithm see:%%  'Further Advances in RBF Networks', 1999.%% Program name (for error messages).prog = 'rbf_rt_1';% Configuration specification.spec(1) = struct( ...  'comment', 'Scale length trial values', ...  'name',    'scales', ...  'type',    {{'vector', 'positive'}}, ...  'options', [], ...  'default', [1 2]);spec(2) = struct( ...  'comment', 'Minimum membership trial values', ...  'name', 'minmem', ...  'type', {{'vector', 'positive', 'integer'}}, ...  'options', [], ...  'default', 5);spec(3) = struct( ...  'comment', 'Model selection criterion', ...  'name', 'msc', ...  'type', 'string', ...  'options', {{'bic', 'gcv', 'loo'}}, ...  'default', 'bic');spec(4) = struct( ...  'comment', 'Factor for adjusted GCV', ...  'name', 'agcv', ...  'type', {{'number', 'positive'}}, ...  'options', [], ...  'default', 1);spec(5) = struct( ...  'comment', 'Basis function type', ...  'name', 'type', ...  'type', 'string', ...  'options', [], ...  'default', 'g');spec(6) = struct( ...  'comment', 'Basis function sharpness', ...  'name', 'exp', ...  'type', 'number', ...  'options', [], ...  'default', 2);spec(7) = struct( ...  'comment', 'Regularisation parameter', ...  'name', 'lambda', ...  'type', {{'number', 'nonnegative'}}, ...  'options', [], ...  'default', 0);spec(8) = struct( ...  'comment', 'Pseudo-inverse instead of normal', ...  'name', 'pseudo', ...  'type', 'number', ...  'options', {{0, 1}}, ...  'default', 0);spec(9) = struct( ...  'comment', 'Extra speed', ...  'name', 'speed', ...  'type', 'number', ...  'options', {{0, 1}}, ...  'default', 1);spec(10) = struct( ...  'comment', 'Resolve draws randomly', ...  'name', 'rand', ...  'type', 'number', ...  'options', {{0, 1}}, ...  'default', 1);spec(11) = struct( ...  'comment', 'Placement of centres', ...  'name', 'edge', ...  'type', 'number', ...  'options', {{0, 1}}, ...  'default', 0);spec(12) = struct( ...  'comment', 'Display graphical timer', ...  'name', 'timer', ...  'type', 'string', ...  'options', [], ...  'default', '');spec(13) = struct( ...  'comment', 'Verbose output', ...  'name', 'verb', ...  'type', 'number', ...  'options', {{0 1}}, ...  'default', 0);spec(14) = struct( ...  'comment', 'Print final summary', ...  'name', 'rprt', ...  'type', 'number', ...  'options', {{0, 1}}, ...  'default', 0);% Check number of arguments. Take special action if only one.switch nargincase 1  if isstring(X)    switch X    case 'conf'      conf_print(prog, spec)      return    case 'demo'      [mydemo, myclean] = eval(['demo_' prog]);      run_demo(mydemo, myclean)      return    otherwise      error([prog ': ''' X ''' unrecognised for single string argument'])    end  else    error([prog ': unrecognised type for single argument'])  endcase 2  if isstring(X) & isstring(y)    switch X    case 'conf'      conf_print(prog, spec, y)      return    otherwise      error([prog ': ''' X ''' unrecognised for double string argument'])    end  else    conf = [];  endcase 3otherwise  error([prog ': illegal number of arguments'])end% Check type of input arguments.if ~isnumeric(X) | ndims(X) ~= 2  error([prog ': first argument (X) should be a matrix'])endif ~isnumeric(y) | ndims(y) ~= 2 | size(y,2) ~= 1  error([prog ': second argument (y) should be a column vector'])end% Check for consistent size between X and y.[d,p] = size(X);if size(y,1) ~= p  error([prog ': number of samples inconsistent between X and y'])end% Check the configuration is okay and set defaults (if required).conf = conf_check(conf, spec, prog);% Scales and minimum memberships.scales = conf.scales;nscale = length(scales);mins = conf.minmem;nmin = length(mins);% Initialisation for flops and time.stats.comps = flops;stats.ticks = clock;% Set up static part of tree growing configuration.tcfg.verb = conf.verb;tcfg.rprt = conf.rprt;if conf.edge  tcfg.place = 'edge';else  tcfg.place = 'centre';end% Set up static part of RBF growing configuration.rcfg.msc = conf.msc;rcfg.agcv = conf.agcv;rcfg.type = conf.type;rcfg.exp = conf.exp;rcfg.lambda = conf.lambda;rcfg.pseudo = conf.pseudo;rcfg.speed = conf.speed;rcfg.rand = conf.rand;rcfg.rprt = conf.rprt;% Set up a timer for minmem (if required).if ~strcmp(conf.timer,'')  tconf.name = [prog ' minmem ' conf.timer];  tconf.n = nmin;  minm_tmr = get_tmr(tconf);end% Loop over mins.for m = 1:nmin  % Increment the timer for minmem.  if ~strcmp(conf.timer,'')    inc_tmr(minm_tmr)  end  % Grow a tree for this minmem.  tcfg.minm = mins(m);  tree = grow_tree(X, y, tcfg);  % Set up a timer for scales (if required).  if ~strcmp(conf.timer,'')    tconf.name = [prog ' scales ' conf.timer];    tconf.n = nscale;    scale_tmr = get_tmr(tconf);  end      for s = 1:nscale      % Increment the timer for scale.    if ~strcmp(conf.timer,'')      inc_tmr(scale_tmr)    end    % Grow an RBF on the current tree.    rcfg.scale = scales(s);    [rbf, tree] = growRBF(tree, rcfg);      % Is this the best tree so far.    if m == 1 & s == 1      btree = tree;      brbf = rbf;      bscale = rcfg.scale;      bminm = tcfg.minm;    else      if rbf.err < brbf.err        btree = tree;        brbf = rbf;        bscale = rcfg.scale;        bminm = tcfg.minm;      end    end  end  % Close the timer for scale.  if ~strcmp(conf.timer,'')    close(scale_tmr)  endend% Close the timer for minmem.if ~strcmp(conf.timer,'')  close(minm_tmr)end% Record the computations and time taken.stats.comps = flops - stats.comps;stats.ticks = etime(clock,stats.ticks);% Get the centres, radii and weights of the best tree.C = brbf.C;R = brbf.R;w = brbf.w;% Other potentially useful results go in 'info'.info.scale = bscale;info.minm = bminm;info.tree = btree;info.rbf = brbf;info.err = brbf.err;info.stats = stats;% Configuration for rbf_dm also goes in info.info.dmc = struct('type', conf.type, 'exp', conf.exp, 'bias', 0);function [rbf, tree] = growRBF(tree, conf)%% Grows an RBF over a tree.%% Initialisation for flops and time.if conf.rprt  comps = flops;  ticks = clock;end% Initialise and grow.[rbf, tree] = initNet(tree, conf);okay = 1;while okay  [rbf, okay] = splitNet(rbf, tree, conf);end% Record the computations and time taken.if conf.rprt  comps = flops - comps;  ticks = etime(clock,ticks);end% print a report.if conf.rprt  fprintf('-------- growRBF report --------\n')  fprintf('rbfs:       %d\n', rbf.m)  fprintf('actions:    '), fprintf('%d ', rbf.stats.actions), fprintf('\n')  fprintf('splits:     '), fprintf('%d ', rbf.stats.splitds), fprintf('\n')  fprintf('flops:      %d\n', comps)  fprintf('time:       %.3f\n', ticks)  fprintf('--------------------------------\n')endfunction [rbf, tree] = initNet(tree, conf)%% Initialise an RBF network prior to growing one over a tree.%% Calculate RBF columns for every node.dmcfg.type = conf.type;dmcfg.exp = conf.exp;for j = 1:tree.numn  n = tree.node(j);  tree.node(j).h = rbf_dm(tree.X, n.c, n.r * conf.scale, dmcfg);end% Initialise the network with the RBF from the root node of the tree.n = tree.node(1);rbf.C = n.c;rbf.R = n.r * conf.scale;rbf.H = n.h;rbf.m = 1;% MSC, variance, weights etc.[rbf.err, rbf.A, rbf.w, rbf.e, rbf.gam, rbf.AH] = learn(rbf.H, tree.y, conf);% Initialise the array of indexes which relate columns in H to tree nodes.rbf.node = 1;% Initialise the list of teminal tree nodes and their number.rbf.term = 1;rbf.numt = 1;% Stats.rbf.stats.actions = zeros(1,8);rbf.stats.splitds = zeros(tree.d,1);function [rbf, okay] = splitNet(rbf, tree, conf)%% Try to grow RBF further down the tree.%% For each terminal node, calculate the change in MSC% which would occur if that split was actually taken.% 8 possibilites: add both, add left, add right, add none;% replace both, replace left, replace right, remove the parent.dmsc = zeros(rbf.numt,8);for k = 1:rbf.numt    % Which node?  ind = rbf.term(k);  n = tree.node(ind);    % Has this node got children?  if isempty(n.split)      % No. It can't be split.    dmsc(k,:) = -1 * ones(1,8);  else    % Yes it can be split. What are its potential RBF contributions?    lh = tree.node(n.split.l).h;    rh = tree.node(n.split.r).h;    % Try adding both, left only, right only, or no change.    if (strcmp(conf.msc,'gcv') | strcmp(conf.msc,'bic')) & conf.speed == 1      dmsc(k,1:4) = learnQuick(rbf, tree, lh, rh, conf);    else      dmsc(k,1) = rbf.err - learn([rbf.H lh rh], tree.y, conf);      dmsc(k,2) = rbf.err - learn([rbf.H lh], tree.y, conf);      dmsc(k,3) = rbf.err - learn([rbf.H rh], tree.y, conf);      dmsc(k,4) = 0;    end    % Try replacing both.    if ~ismember(ind, rbf.node)      dmsc(k,5:7) = dmsc(k,1:3);      dmsc(k,8) = -1;    else      % Try replacing both, left only, right only, or just removing parent.      if (strcmp(conf.msc,'gcv') | strcmp(conf.msc,'bic')) & conf.speed == 1        % I don't know how to do this quickly yet, so avoid the issue for now.        % Meanwhile, if you want this feature, don't use conf.speed = 1.        dmsc(k,5:8) = -1 * ones(1,4);      else        keep = find(rbf.node ~= ind);        dmsc(k,5) = rbf.err - learn([rbf.H(:,keep) lh rh], tree.y, conf);        dmsc(k,6) = rbf.err - learn([rbf.H(:,keep) lh], tree.y, conf);        dmsc(k,7) = rbf.err - learn([rbf.H(:,keep) rh], tree.y, conf);        dmsc(k,8) = rbf.err - learn(rbf.H(:,keep), tree.y, conf);      end    end  end  end% What's the best action/terminal combo?[mdmsc, k] = max(dmsc, [], 1);[mmdmsc, act] = max(mdmsc, [], 2);% If there are no favourable changes possible, signal that and quit.if mmdmsc < 0  okay = 0;  returnelse  okay = 1;end% Record action in info stats.rbf.stats.actions(act) = rbf.stats.actions(act) + 1;% Index of the node (in tree.node) assuming no tie.ind = rbf.term(k(act));% In the case of a tie amongst two or more terminals,% randomly select one rather than always taking the first (k(act)).% Only do this if indeterminancy is permitted (by conf.rand == 1).if conf.rand  winners = find(dmsc(:,act) == mmdmsc);  numwins = length(winners);  if numwins > 1    winner = winners(ceil(rand * numwins));    ind = rbf.term(winner);  endend% Tree node being split and its children.n = tree.node(ind);lind = n.split.l;rind = n.split.r;ln = tree.node(lind);rn = tree.node(rind);% Record the split dimension. Maybe this should depend on action.dim = n.split.dim;rbf.stats.splitds(dim) = rbf.stats.splitds(dim) + 1;% Remove this parent from the terminal list.rbf.term(find(rbf.term == ind)) = [];rbf.numt = rbf.numt - 1;% Make the children of this node terminals.rbf.term = [rbf.term lind rind];rbf.numt = rbf.numt + 2;% Less awkward names.p = tree.p;y = tree.y;% Update the RBF network. Are we replacing the parent?if act <= 4  % No. Keep all the old columns.  m = rbf.m;  keep = 1:m;else  % Yes. Discard the parent if it's there.  if ismember(ind, rbf.node)    m = rbf.m - 1;    keep = find(rbf.node ~= ind);  else    m = rbf.m;    keep = 1:m;  endend% Are we adding both, one or none?if act == 1 | act == 5  % Both.  m = m + 2;  nc = [ln.c rn.c];  nr = [ln.r*conf.scale rn.r*conf.scale];  nh = [ln.h rn.h];  nt = [lind rind];elseif act == 2 | act == 6  % Left only.  m = m + 1;  nc = ln.c;  nr = ln.r*conf.scale;  nh = ln.h;  nt = lind;elseif act == 3 | act == 7  % Right only.  m = m + 1;  nc = rn.c;  nr = rn.r*conf.scale;  nh = rn.h;  nt = rind;else  % None.  nc = [];  nr = [];  nh = [];  nt = [];end% Update the RBF parameters.rbf.m = m;rbf.C = [rbf.C(:,keep) nc];rbf.R = [rbf.R(:,keep) nr];rbf.H = [rbf.H(:,keep) nh];[rbf.err, rbf.A, rbf.w, rbf.e, rbf.gam, rbf.AH] = learn(rbf.H, tree.y, conf);% Update the array of indexes which relate columns in H to tree nodes.rbf.node = [rbf.node(keep) nt];function [msc, A, w, e, gam, AH] = learn(H, y, conf)%% Get MSC and other things from from H and y.%[p,m] = size(H);if conf.pseudo  A = pinv(H'*H + conf.lambda * eye(m));else  A = inv(H'*H + conf.lambda * eye(m));endw = A * (H' * y);f = H * w;e = y - f;if conf.lambda == 0  gam = m;else  gam = m - conf.lambda * trace(A);endswitch conf.msccase 'gcv'  msc = p * (e' * e) / (p - conf.agcv * gam)^2;case 'loo'  dP = ones(p,1) - sum((H*A).*H,2);  msc = sum((e ./ dP).^2) / p;case 'bic'  msc = (p + (log(p) - 1) * gam) * (e' * e) / (p * (p - gam));otherwise  error(['growRBF: learn: bad MSC (' conf.msc ')'])endif nargout > 5  AH = A * H';endfunction changes = learnQuick(rbf, tree, h1, h2, conf)%% Speedy GCV or BIC calculation.%% Initialise.msc1 = rbf.err;H1 = rbf.H;A1H1 = rbf.AH;P1y = rbf.e;gam1 = rbf.gam;y = tree.y;lam = conf.lambda;changes = zeros(1,4);[p,m1] = size(H1);% Add h1 (left).m2 = m1 + 1;P1h1 = h1 - H1 * (A1H1 * h1);h1P1h1 = h1'*P1h1;yP1h1 = y'*P1h1;e2 = P1y - (yP1h1/(lam+h1P1h1)) * P1h1;sse2 = e2' * e2;if lam == 0  gam2 = m2;else  h1P1P1h1 = P1h1'*P1h1;  gam2 = gam1 + h1P1P1h1/(lam + h1P1h1);endswitch conf.msccase 'gcv'  msc2 = p * sse2 / (p - conf.agcv * gam2)^2;case 'bic'  msc2 = (p + (log(p) - 1) * gam2) * sse2 / (p * (p - gam2));otherwise  error(['growRBF: learnQuick: bad MSC (' conf.msc ')'])endchanges(2) = msc1 - msc2;% Add h2 (right) as well.m3 = m2 + 1;P2y = P1y - (yP1h1/(lam + h1P1h1)) * P1h1;A1H1h2 = A1H1 * h2;P1h2 = h2 - H1 * A1H1h2;h2P1h1 = h2' * P1h1;P2h2 = P1h2 - (h2P1h1/(lam + h1P1h1)) * P1h1;h2P2h2 = h2'*P2h2;yP2h2 = y'*P2h2;e3 = P2y - (yP2h2/(lam+h2P2h2)) * P2h2;sse3 = e3' * e3;if lam == 0  gam3 = m3;else  h2P2P2h2 = P2h2'*P2h2;  gam3 = gam2 + h2P2P2h2/(lam + h2P2h2);endswitch conf.msccase 'gcv'  msc3 = p * sse3 / (p - conf.agcv * gam3)^2;case 'bic'  msc3 = (p + (log(p) - 1) * gam3) * sse3 / (p * (p - gam3));endchanges(1) = msc1 - msc3;% What about adding h2 (right) only.h1 = h2;m2 = m1 + 1;P1h1 = h1 - H1 * (A1H1 * h1);h1P1h1 = h1'*P1h1;yP1h1 = y'*P1h1;e2 = P1y - (yP1h1/(lam+h1P1h1)) * P1h1;sse2 = e2' * e2;if lam == 0  gam2 = m2;else  h1P1P1h1 = P1h1'*P1h1;  gam2 = gam1 + h1P1P1h1/(lam + h1P1h1);endswitch conf.msccase 'gcv'  msc2 = p * sse2 / (p - conf.agcv * gam2)^2;case 'bic'  msc2 = (p + (log(p) - 1) * gam2) * sse2 / (p * (p - gam2));endchanges(3) = msc1 - msc2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久一夜天堂av一区二区三区| 欧美在线一区二区三区| 91精品国产91热久久久做人人| 午夜私人影院久久久久| 欧美另类高清zo欧美| 人人狠狠综合久久亚洲| 精品福利在线导航| 国产成人亚洲综合a∨婷婷图片| 国产精品无码永久免费888| 97久久超碰精品国产| 婷婷国产v国产偷v亚洲高清| 日韩欧美亚洲一区二区| 国产成人午夜视频| 一色桃子久久精品亚洲| 色欲综合视频天天天| 视频一区国产视频| 国产亚洲精品久| 日本大香伊一区二区三区| 美国十次了思思久久精品导航| 久久久亚洲国产美女国产盗摄 | 欧美一级理论片| 国产精品18久久久久久久网站| 国产精品久久久久久久久免费丝袜| 色婷婷香蕉在线一区二区| 午夜国产不卡在线观看视频| 久久综合av免费| 欧美在线啊v一区| 国产精品资源在线观看| 中文字幕视频一区| 日韩欧美国产wwwww| 91在线一区二区三区| 欧美aaa在线| 亚洲激情图片qvod| 久久午夜电影网| 欧美色视频在线观看| 国产大陆精品国产| 日本一不卡视频| 一区二区三区中文在线| 国产欧美日韩另类一区| 7777精品伊人久久久大香线蕉经典版下载| 激情综合一区二区三区| 亚洲国产欧美日韩另类综合| 久久精品欧美日韩精品| 9191精品国产综合久久久久久| jlzzjlzz亚洲日本少妇| 国内外精品视频| 丝袜诱惑制服诱惑色一区在线观看| 欧美极品aⅴ影院| 日韩女优制服丝袜电影| 欧美午夜精品久久久久久孕妇| 久久成人免费网| 午夜婷婷国产麻豆精品| 亚洲靠逼com| 欧美国产日韩在线观看| 久久综合色鬼综合色| 欧美色图天堂网| 日本电影亚洲天堂一区| 成人免费黄色大片| 国产在线乱码一区二区三区| 日韩国产欧美在线播放| 亚洲一区二区三区四区不卡| 中文字幕视频一区二区三区久| 国产午夜精品久久| 精品国产一区二区三区av性色| 555夜色666亚洲国产免| 欧美日韩久久不卡| 欧美日高清视频| 欧美伊人久久久久久久久影院| 色域天天综合网| 91久久一区二区| 欧美午夜电影网| 欧美亚洲一区二区在线观看| 色欧美片视频在线观看 | www.亚洲在线| 成人a免费在线看| eeuss鲁一区二区三区| 岛国av在线一区| 成人免费视频视频在线观看免费| 久久成人综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 91美女在线看| 色综合久久99| 欧美无人高清视频在线观看| 欧美三级资源在线| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩一区二区三区在线看 | 日韩欧美国产一区在线观看| 日韩欧美高清在线| 久久综合色8888| 中文av一区二区| 亚洲欧美激情小说另类| 婷婷开心久久网| 国产最新精品精品你懂的| 高清视频一区二区| 在线观看视频一区| 91麻豆精品国产自产在线| 欧美mv日韩mv| 欧美国产日本视频| 亚洲综合色噜噜狠狠| 日日夜夜一区二区| 国产一区二区精品在线观看| 国产乱子伦一区二区三区国色天香| 国产激情91久久精品导航 | 亚洲影院理伦片| 日韩va欧美va亚洲va久久| 美女视频网站久久| 成人av网址在线观看| 欧美日韩中文国产| 国产亚洲成年网址在线观看| 亚洲人成在线观看一区二区| 午夜激情一区二区三区| 国产高清不卡一区二区| 日本高清无吗v一区| 欧美精品一区二区三区高清aⅴ| 亚洲欧洲中文日韩久久av乱码| 日韩高清在线一区| 成人av电影免费观看| 91精品国产色综合久久| 综合自拍亚洲综合图不卡区| 日本大胆欧美人术艺术动态| 成人av中文字幕| 日韩欧美一区二区视频| 一区二区三区视频在线看| 精品一区二区三区av| 日本福利一区二区| 国产欧美日韩视频在线观看| 日韩黄色片在线观看| 97久久超碰精品国产| 精品久久国产老人久久综合| 亚洲综合色视频| 国产成a人亚洲精| 日韩免费在线观看| 亚洲最色的网站| 豆国产96在线|亚洲| 欧美一级一级性生活免费录像| 国产精品久久久久三级| 欧美aaaaa成人免费观看视频| 色综合久久综合网| 中文字幕国产一区二区| 久久国产生活片100| 欧美精品久久99久久在免费线| 亚洲欧美激情一区二区| 国产成人av电影| 欧美精品一区视频| 秋霞国产午夜精品免费视频| 91麻豆国产福利精品| 中文字幕av一区二区三区| 久草在线在线精品观看| 欧美丰满美乳xxx高潮www| 亚洲精品第一国产综合野| 国产91富婆露脸刺激对白| 久久尤物电影视频在线观看| 蜜桃精品在线观看| 91精品国产综合久久精品app| 一区二区三区中文字幕电影| 成人黄色在线视频| 中文字幕成人av| 粉嫩av一区二区三区| 国产日韩综合av| 国产不卡视频一区| 中文字幕av一区二区三区高| 国产精华液一区二区三区| 国产偷国产偷精品高清尤物| 国产一区欧美日韩| 久久综合九色综合欧美98 | 亚洲日韩欧美一区二区在线| 成人免费看片app下载| 国产精品视频一二三区| 成人激情小说网站| 亚洲欧洲精品一区二区三区| a在线播放不卡| 亚洲欧美一区二区三区久本道91 | 亚洲午夜激情网页| 欧美肥大bbwbbw高潮| 日本在线观看不卡视频| 精品毛片乱码1区2区3区| 激情亚洲综合在线| 亚洲国产精品精华液ab| 成人高清视频在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| www.av精品| 亚洲成av人片一区二区三区| 777奇米四色成人影色区| 久久av中文字幕片| 中文av一区特黄| 在线免费一区三区| 日本人妖一区二区| 久久精品视频在线免费观看 | 欧美综合在线视频| 日本不卡高清视频| 国产亚洲欧洲一区高清在线观看| 成人国产视频在线观看| 亚洲综合久久久久| 精品国产免费一区二区三区四区| 粉嫩高潮美女一区二区三区| 一区二区三区国产豹纹内裤在线| 91精品欧美久久久久久动漫| 国产精品综合二区| 亚洲一区二区三区视频在线播放| 日韩免费看网站|