MDS降维算法

最后更新于:2024-04-07 21:41:01

一、代码运行环境

MATLAB2014b及更新版本。

二、程序介绍

此图像的alt属性为空;文件名为image.png
此图像的alt属性为空;文件名为image-5.png

1.demo_MDS.m文件

MDS降维函数kMDS.m的测试脚本文件,可以直接运行。程序运行完成后,会绘制出如下一张图:

此图像的alt属性为空;文件名为image-1.png

此时在工作区能找到MDS降维后的变量:mdsVal

此图像的alt属性为空;文件名为image-2.png

另外:options.NumDimensions = 2

改成:options.NumDimensions = 3

之后,重新运行,将会绘制出下图:

此图像的alt属性为空;文件名为image-3.png

2.kMDS.m文件

MDS降维和画图的主函数文件。

MDS降维以及画图功能全部封装在此函数。注意不能直接运行该函数文件,而要参照demo_MDS.m文件的写法进行函数调用。

代码注释说明如下:

function mdsVal = kMDS(Fea, options, species,figflag)
%% 执行数据的MDS降维
%% 可以实现2维、3维以及更高维度的降维,只有二维和三维可以画图
% 输入:
% Fea:待降维数据,R*Q的矩阵,R为批次数,Q为特征维度,例如特征维度为8的共100组数,tempFea的维度应为100*8。输入该变量时一定要注意行列方向是否正确,如不正确需要转置
% options:一些与MDS降维有关的设置,使用结构体方式赋值,比如 options.Distance = 'euclidean' ,具体包括:
%              -Distance:距离量度方法选择,可选:'euclidean' (default) | 'seuclidean' | 'cityblock' | 'chebychev' | 'minkowski' | 'mahalanobis' | 'cosine' | 'correlation' | 'spearman' | 'hamming' | 'jaccard'
%                         具体描述见:https://ww2.mathworks.cn/help/stats/pdist.html?s_tid=doc_ta#mw_39296772-30a1-45f3-a296-653c38875df7
%              -NumDimensions:降维后的数据维度,默认为2
% species:分组变量,可以是数组、数值向量、字符数组、字符串数组等,但是需要注意此变量维度需要与Fea的组数一致。该变量可以不赋值,调用时对应位置写为[]即可
%          例如species可以是[1,1,1,2,2,2,3,3,3]这样的数组,代表了Fea前3行数据为第1组,4-6行数据为第2组,7-9行数据为第三组。
%          关于此species变量更多信息,可以查看下述链接中的"Grouping variable":
%          https://ww2.mathworks.cn/help/stats/gscatter.html?s_tid=doc_ta#d124e492252
% 
% figflag:是否画图,'on'为画图,'off'为不画,只有NumDimensions为2或者3时起作用,3以上无法画图

三、快速开始

1.运行测试脚本

先在MATLAB里打开下载好的文件夹,然后运行demo_MDS.m程序,程序运行完毕后如果没报错,且正常画出分布图像,则说明运行环境正常,程序正确。

2.修改仿真数据/导入数据

复制一个demo_MDS.m的文件副本,在这个副本里做如下修改:

(1)第一种情况,你可能想要对你自己要研究的数据进行降维,此时你需要对 demo_MDS.m 脚本文件中的第1小节内容进行修改替换即可。需要注意的是,请最好保持变量名的一致,即将待降维的矩阵命名为data。此时数据替换完成。

(2)第二种情况,你可能是想对一段真实采集的数据进行滤波,此时需要根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以看博主针对常用文件的导入方法的这个教程,教程上未包含的数据类型,大家可以再参考这个文档导入完成后请将这个待降维信号命名为data

3.实现demo_MDS降维

参照 demo_MDS.m文件中第二步,按照实际需求设置options.NumDimensions 、options.Distance及figflag等参数的值。

运行程序即可。

四、关于完整版与公开版代码

功能完整版公开版
数据导入、参数设置、实现MDS降维
软件全部源码(函数m文件)×
画图无水印×
降维数据长度无限制150以内

五、获取公开版程序(需使用电脑浏览器打开)

MDS代码(公开版)

注:公开版代码需使用MATLAB2022a及以上版本

六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需39元)。付款完成后刷新一下本页面即可看到下载链接。

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 39元 才能查看此处内容!立即支付

七、完整版代码重要更新

20230405 完成初版代码

八、常见问题

问题1:该降维方法只能降维到二维或者三维吗?

降维方法可以将高维数据降至任意低维度,而不仅仅是二维或三维。具体的降维维度取决于你的需求和应用场景。不过降维到二维或者三维可以进行可视化展示,更高维度则不行。