请教各位 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
调用函数在哪?主函数呢?
再看看别人怎么说的。
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看