24小时热门版块排行榜    

查看: 6146  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

刘行思

新虫 (初入文坛)

[求助] 如何用Matlab画矩阵的散点图?

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

» 收录本帖的淘帖专辑推荐

仿真建模与计算 程序语言箱

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

freemanxu

金虫 (初入文坛)

写的很好,受教了!
4楼2012-07-17 00:17:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

729267452lgl

至尊木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
刘行思: 金币+1, 有帮助, 谢谢 2012-07-15 13:44:11
你可以编程,首先测试矩阵的宽度和长度,然后用两个循环,一个以宽度为变量,一个以长度为变量,然后依次画出每个点,画的时候通过if语句进行判断,画完一个点后,用hold on保留在一张图上,然后就得到你要的图了。
2楼2012-07-15 09:25:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

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

效果图:
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2012-07-15 18:38:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见