当前位置: 首页 > 计算模拟 >如何用Matlab画矩阵的散点图?

如何用Matlab画矩阵的散点图?

作者 刘行思
来源: 小木虫 150 3 举报帖子
+关注

我用MATLAB计算Ising模型,结果生成了这样子的一个矩阵。1表示自旋向上,-1表示自旋向下。我想根据矩阵用Matlab画一个点阵,实心点表示自旋向上,空心点表示自旋向下,请问我要怎么画?调用什么函数?
 返回小木虫查看更多

今日热帖
  • 精华评论
  • 729267452lgl

    你可以编程,首先测试矩阵的宽度和长度,然后用两个循环,一个以宽度为变量,一个以长度为变量,然后依次画出每个点,画的时候通过if语句进行判断,画完一个点后,用hold on保留在一张图上,然后就得到你要的图了。

  • libralibra

    我不建议用循环,matlab的优势是用向量化避免循环来加快处理速度,如果双重循环,那与其他语言(c/c++,java等)无异

    matlab的测试代码如下,你只需要将test换成你的结果数据即可
    最后的散点图用了2种方法,注释掉了第一种一次作图的方式

    CODE:
    % 生成全为1的数据, 50*50
    test = ones(50,50);

    % 生成-1的下标,原矩阵元素的1/3
    rand_minus_one = randi(numel(test),1,ceil(numel(test)/3));

    % 生成测试数据,±1都有
    test(rand_minus_one) = -1;

    % 测试数据矩阵大小
    [m,n] = size(test);

    % 得到+1的下标
    [row1,col1] = ind2sub([m,n],find(test==1));

    % 得到-1的下标
    [row2,col2] = ind2sub([m,n],find(test==-1));

    % 一次作散点图
    % figure, plot(col1,row1,'rs',col2,row2,'bo');

    % hold住后分2次做散点图
    figure,hold on;
    scatter(col1,row1,'filled'); scatter(col2,row2);

    效果图:

  • freemanxu

    写的很好,受教了!

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓