Matlab分散了两个矩阵 - 问题

时间:2014-11-05 15:53:02

标签: matlab scatter

我试图找出散点函数在matlab中的工作原理。 例如,我有两个矩阵:

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

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

figure()
scatter(mat1,mat2)

明显是错的。但我不知道该怎么做。另外,我在matlab文档Scatter Function - MATLAB DOCS

中阅读了有关分散函数的文档

欢迎提出建议!感谢。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

Scatter只是一种绘制数据的方法。 Scatter会将数据绘制为点而不连接它们。试试

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

enter image description here

答案 2 :(得分:0)

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

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

2D Scatter plot using different colors via logical indexing

% 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:自定义颜色图
创建一个自定义colormap,将其直接映射到所需的颜色。在下面的示例中,颜色图仅包含两种颜色。逻辑变量idxRed仅具有两个可能的值,因此此处不需要调用caxis([0 1])

2D Scatterplot with markers colored using colormap

% 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');