本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

MATLAB的元胞字符串数组(cell array of strings)

matlab培训 cdadata 5900℃

MATLAB的元胞字符串数组(cell array of strings)

关键词:array of strings、matlab元胞转为字符串matlab 元胞转字符串

今天为了在MATLAB中绘制主成分分析得到的载荷矩阵和得分矩阵的biplot图,但MATLAB提供的biplot函数在绘制图像时,只能在结果图形上显示出variables的名称作为标注;而同时绘制的观测量(samples)的分布图,则没有标示出其名字。

我在网上搜索,最后通过修改MATLAB中biplot函数的源文件,终于实现了需要的效果。最后的调用biplot函数的形式如下所示:

biplot(coeff(:,1:2),’scores’,score(:,1:2),’varlabels’,var,’obslabels’,name)

不过,这里的var和name两个用以包含variables和samples的名称的数组需要使用MATLAB中的元胞数组,即cell array。这是个较为罕用的东西,不过概念不难理解,需要用到的朋友可以自行Google。

MATLAB的元胞字符串数组(cell array of strings)

通常在MATLAB中我们可以直接以这种形式来生成一个元胞数组:

var = {‘MATLAB’ ‘PCA’ ‘PLS’ ‘ANN’ ‘SVM’};

注意,大括号中间相邻的两个单引号之间有空格;或者

var = {‘MATLAB’,’PCA’,’PLS’,’ANN’,’SVM’};

对于这种直接可以用文字来赋值的小型元胞数组,我们可以使用如上所示的形式。但如果我们需要一个包含数百个元素的元胞数组,而其中每一个元素都是数字编号,比如形如{’1′ ’2′ ’3′…}这样的元胞数组,那么,我们如何来实现呢?

最开始我想到的是这样去做:

var = cellstr(num2str(1:size(score,1)));

但是这样得到的结果,是把数组1:size(score,1)作为一个整体得到一个只有一个元素的元胞数组,这唯一的一个元素是形如’123456…’的形式,而这显然不符合我们的要求。

不过很显然,加个循环,我们就得到了我们想要的结果了:

var = [];
for i = 1:size(score,1)
var = [var, cellstr(num2str(i))];
end

转载请注明:数据分析 » MATLAB的元胞字符串数组(cell array of strings)

喜欢 (0)or分享 (0)