matlab如何用鼠标选取fig图上的区域并获得坐标值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab如何用鼠标选取fig图上的区域并获得坐标值相关的知识,希望对你有一定的参考价值。
matlab如何用鼠标选取fig图上的一块区域,并得到所选区域的坐值
1、首先在matlab软件上绘制一个简单的折线图,代码如图所示。
2、折线图结果如图所示,两种折线图黑点和圆圈。
2、然后添加纵横坐标轴。在fig图上点击insert菜单,如图所示。
4、然后在insert菜单中,点击x label选项或者y label选项,如图所示。
5、接着鼠标点击下,然后在纵横坐标轴上输入标题即可,如图所示就完成了。
参考技术A 画图后h=imrect;
图中就会出现可以拖动以及改变大小的矩形框
选好位置后
pos=getPosition(h);
pos有四个值,分别是矩形框的左下角点的坐标 x y 和 框的 宽度和高度追问
这是要用到GUI是吧,这个pos只是所选择矩形框的宽高值,我想要的是选择区域内所有点的值
追答直接调用函数就可以,不涉及过多GUI操作
pos返回的是四个值
[左下角横坐标,左下角纵坐标,宽度,高度]
如果你原来的fig是一副图像,也就是一个矩阵
从这四个值就可以得到框住区域的下标
就可以从原来的矩阵中提取出数据
例如
a=peaks(100); %a是个二维矩阵
imagesc(a); %利用二维矩阵a画图,会生成一个figure窗口
h=imrect; %运行完这句后,可以在图中框出需要的区域
pos = getPosition(h); %待区域决定后,运行这句就会返回区域的位置和大小
row=round(pos(1)):round(pos(1)+pos(3)); %根据pos计算行下标
col=round(pos(2)-pos(4)):round(pos(2)); %根据pos计算列下标
%由于pos返回有小数,用round取整
b=a(row,col); %根据row,col,从a中提取矩阵b
%这时候矩阵b里面的是框住区域的数据
如何用matlab读取txt文件中的数据,并画图
txt数据格式是这样的:第1个坐标点 x=1.22 y=2.33,一共有好多好多行,如何读取里面的x,y的坐标?并画出2维图?
用importdata读取数据,这些数据全在一列了
我使用下面的程序,但是每次画图都出错,应该是吧a的值赋给mynumber的时候数据类型不对了,可是我不会改。
%% 1 打开文件
[filename,filepath]=uigetfile('*.txt','选择文件!!!!');
file = [filepath filename];
fid = fopen(file,'rt');
if fid == -1
error('文件打开错误。')
end
%% 2 提取
mynumber = [];
while 1
nextline = fgetl(fid);
if ~isstr(nextline), break, end
disp(nextline);
a=sscanf(nextline, '%f');
mynumber=[mynumber;a]
end
numplot=mynumber(:);
plot(numplot);
利用MATLAB中的 load 读取函数与 plot 绘图函数可以实现所需的功能。
代码如下(假设txt的文件名为 data.txt ):
load data.txt
plot(1:length(data),data,'*-')
由于没有横坐标的值,横坐标利用 1:length(data) 代替。
如果data.txt 文件不在MATLAB的默认路径里面,那么文件还应包含此文件的路径。例如data.txt文件的路径为 C:\\practice ,那么 load 函数应该改为
load C:\\practice\\data.txt
实现二维绘图功能可以利用最简单的绘图函数 plot 。例如绘制 X 与 Y 的图像(X,Y均为1*n或者n*1的矩阵),输入命令 plot(X,Y) 即可快速绘图。
扩展资料:
load 的其他用法:
1、 load(filename)
从 filename 加载数据。如果 filename 是 MAT 文件,load(filename) 会将 MAT 文件中的变量加载到 MATLAB 工作区;如果 filename 是 ASCII 文件,load(filename) 会创建一个包含该文件数据的双精度数组。
2、 load(filename,variables)
加载 MAT 文件 filename 中的指定变量variables。
3、 load(filename,'-ascii')
将 filename 视为 ASCII 文件,而不管文件扩展名如何。
4、 load(filename,'-mat')
将 filename 视为 MAT 文件,而不管文件扩展名如何。
5、 load(filename,'-mat',variables)
加载 filename 中的指定变量。
6、 S = load(___)
使用前面语法组中的任意输入参数将数据加载到 S 中。如果 filename 是 MAT 文件,则 S 是结构数组;如果 filename 是 ASCII 文件,则 S 是包含该文件数据的双精度数组。
参考技术A 请楼主把txt文件和上述代码发给我:humour333@126.com
我帮你看看怎么回事。
“用importdata读取数据,这些数据全在一列了 ”这个问题可以用reshape函数来进行修改。
你在matlab下打开“doc reshape”帮助查看一下reshape的使用方法,看例子就很明白了。本回答被提问者采纳 参考技术B 可以用importdata读取数据 至于画图直接plot就好了
还有什么问题站内联系 参考技术C 你要不把数据放在EXCEL中试试看
以上是关于matlab如何用鼠标选取fig图上的区域并获得坐标值的主要内容,如果未能解决你的问题,请参考以下文章
delphi中如何获得当前屏幕photoshop选择区域右上角的坐标值