Matlab散布两个矩阵-问题

ifmq2ha2  于 8个月前  发布在  Matlab
关注(0)|答案(3)|浏览(108)

我想弄清楚scatter函数在MATLAB中是如何工作的。例如,我有两个矩阵:

mat1 = rand(20,20);
 mat2 = rand(20,20);

此时,我需要打开一个图,并使用scatter函数显示mat1中的值与mat2中的值的散点图。我做的是:

figure()
scatter(mat1,mat2)

显然这是错误的。但我不知道该怎么做。此外,我还阅读了MATLAB文档Scatter Function - MATLAB DOCS中有关scatter函数的文档

piok6c0g

piok6c0g1#

由于scatter函数需要向量(具有一行或一列的矩阵),因此尝试

figure()
scatter(mat1(:),mat2(:))

(:)运算符将矩阵转换为向量。

svdrlsy4

svdrlsy42#

散点图只是绘制数据的一种方式。Scatter将数据绘制为点,而不连接它们。尝试

mat1= rand(1,20) 
mat2= rand(1,20) 
subplot(121) 
scatter(mat1,mat2); 
subplot(122) 
plot(mat1,mat2)

xyhw6mcr

xyhw6mcr3#

这个答案是对OP的评论的回应,该评论要求如何将不同的标记设置为不同的颜色。

方法1:逻辑索引

要求您为每种颜色定义索引。在下面的示例中,随机选择红色标记;其余的标记将是蓝色的。

% MATLAB R2017a
mat1 = 100*rand(20,1);
mat2 = 100*rand(20,1);

idxRed = rand(20,1)> 0.5;
idxBlue = ~idxRed;

s(1) = scatter(mat1(idxRed),mat2(idxRed),[],'r','filled');
hold on
s(2) = scatter(mat1(idxBlue),mat2(idxBlue),[],'b','filled');

% Cosmetics
daspect([1 1 1])
box on
for j = 1:2
    s(j).MarkerEdgeColor = 'k';    
    s(j).MarkerFaceAlpha = 0.3;    % Transparency control
end

方法2:自定义色彩Map表

创建一个自定义的colormap,直接Map到您想要的颜色。在下面的示例中,颜色Map表仅包含两种颜色。逻辑变量idxRed只有两个可能的值,所以这里不需要调用caxis([0 1])

% Create custom colormap  
col1 = [0 1 0]; % Green 
col2 = [1 0 0]; % Red
cmap = [col1;col2];
% Plot
colormap(cmap), hold on, box on
scatter(mat1,mat2,[],idxRed,'filled');

相关问题