matlab实现mds算法,请教各位 matlab mds算法的问题,希望各位慷慨解囊,感激不尽。...

请教各位 matlab mds算法的问题,希望各位慷慨解囊,感激不尽。

关注:267  答案:2  手机版

解决时间 2021-01-30 17:53

提问者爱的苦涩

2021-01-30 03:11

代码如下:

function mappedX = mds(X, no_dims)

iterations = 30;% Number of iterations(迭代 反复)

lr = 0.05;% Learning rate(学习率)

r = 2;% Metric(测度 度量 尺度)

% Compute pairwise distance matrix 计算成对的距离矩阵

disp('Computing dissimilarity(不同) matrix...');

D = L2_distance(X', X');

n = size(D, 1);

% Normalise(正常化) distances

D = D / max(max(D));

% Compute the variance of the distance matrix(计算距离矩阵的方差)

Dbar = (sum(sum(D)) - trace(D)) / n / (n - 1);

temp = (D - Dbar * ones(n)) .^ 2;

varD = .5 * (sum(sum(temp)) - trace(temp));

% Initialize some more variables(初始化一些变数)

mappedX = rand(n, no_dims) * .01 - .005;

dh = zeros(n);

rinv = 1 / r;

% Iterate(初始化)

disp('Running MDS...')

for i=1:iterations

fprintf('.');

% Randomly permute the objects to determine the order in which they

% are pinned for this iteration()随机确定对象的顺序

pinning_order = randperm(n);

for j=1:n

m = pinning_order(j);

% Move all of the other on each dimension according to the

% learning rule 根据学习规则在每个维度上改变

indx = [1:m-1 m+1:n];

pmat = repmat(mappedX(m,:), [n 1]) - mappedX;

dhdum = sum(abs(pmat) .^ r, 2) .^ rinv;

dh(m, indx) = dhdum(indx)';

dh(indx, m) = dhdum(indx);

dhmat = lr * repmat((dhdum(indx) - D(m,indx)') .* (dhdum(indx) .^ (1 - r)), [1 no_dims]);

mappedX(indx,:) = mappedX(indx,:) + dhmat .* abs(pmat(indx,:)) .^ (r - 1) .* sign(pmat(indx,:));

end

end

disp(' ');

一直调试不通,希望帮忙调试通过。

最佳答案

二级知识专家久而旧之

2021-01-30 04:31

我也遇到同样的问题,请问楼主解决了吗

全部回答

1楼小河边唱歌

2021-01-30 06:04

调用函数在哪?主函数呢?

再看看别人怎么说的。

我要举报

如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值