matlab 鼠标指针坐标怎样显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 鼠标指针坐标怎样显示相关的知识,希望对你有一定的参考价值。
用matlab编写界面程序时想实现一个功能:当鼠标在窗口滑动时在其周围能显示当先鼠标的坐标位置。请各位大侠不吝赐教!!先谢过了!!
MATLAB如何动态显示鼠标的坐标值和图像像素值对于动态显示鼠标的坐标值和像素值,在其他语言如vc,vb中都比较方便,有直接的着方面的函数,那么在matlab图像处理里面又如何实现呢?
具体的实现方法很多,但归结起来就是获取坐标轴的current point 属性值,我这里给出的一个函数是从mathworks 获取柄稍作修改后的结果,相信对做图像处理的朋友有一定的作用。另一个就是自带的pixval函数。谁有不同的实现方法,请多多共享啊!
function dynpoint(arg,h)
% Show the coordinates of a plot dynamically
%
% To start use:
% dynpoint(h)
% where h is a handle to a figure, axes or e.g. line.
%
% To delete use:
% dynpoint('delete',h)
% where h is a handle to a figure, axes or e.g. line.
% (you may also use: dynpoint delete)
%
% There can only be one dynamic plotter in a figure at a time.
%
% Example:
% subplot(211), hline = plot(sin(1:10))
% subplot(212), plot(sin(1:100))
% dynpoint(hline)
% 2002,6.29
if ~exist('arg','var')
arg = gcf;
end
if ~isstr(arg)
handle = arg;
arg = 'init';
end
switch arg
case 'init'
if ~ishandle(handle)
error('h is not a handle')
end
[h,ax] = h2hax(handle);
% delete old dynamic text object
ht = findobj(h,'tag',[mfilename '_text']);
if any(ht)
delete(ht)
end
% text window at the bottom left corner
% text in centred
uicontrol(h,...
'style','text',...
'pos',[2 2 200 15],...
'tag',[mfilename '_text'],...
'userdata',ax(1))
% do the dynamic thing...
set(h,'windowbuttonmotionfcn',[mfilename ' move'])
case 'move'
ht = findobj(gcbf,'tag',[mfilename '_text']);
ax = overobj('axes');
if ~any(ax)
ax = get(ht,'userdata');
end
p = get(ax,'currentpoint');
set(ht,'string',sprintf('(%g, %g)', p(1), p(3)));
case 'delete'
if ~exist('h','var')
h = gcf;
end
[h,ax] = h2hax(h);
set(h,'windowbuttonmotionfcn','')
ht = findobj(h,'tag',[mfilename '_text']);
delete(ht)
end
% ----------
function [h,ax]=h2hax(handle)
typ = get(handle,'type');
if strcmp(typ,'figure')
h = handle;
ax = findobj(h,'type','axes');
elseif strcmp(typ, 'axes')
h = get(handle,'parent');
ax = handle;
elseif strcmp( get(get(handle,'parent'), 'type'), 'axes' )
ax = get(handle,'parent');
h = get(ax,'parent');
end 参考技术A
用imtool函数显示
function main()
h0 = figure;
h1 = imshow('1.jpg');
h2 = uicontrol('style','text','Position',[30 15 100 15],'string','non');
set(h1,'ButtonDownFcn',@clicky);
function clicky(varargin)
a=get(gca,'Currentpoint');
set(findobj('style','text'),'String',strcat('x:',num2str(a(1,1)),'y:',num2str(a(1,2))));
matlab画图,如何修改横坐标的显示数值,急
如何把X轴的坐标0,100,200,300,400,500改成800,900,1000,1100,1200,1300,最好有具体步骤,非常感谢
1、如下图形中的横坐标轴的数据是1、2、3、4、5,不符合现实需求,这时候要修改横坐标的数据值,使得数据表达更加直观。
2、手动修改图形坐标,点击图形上方最右侧的一个小图标,进入后可以在很多地方美化数据图。
3、要修改横坐标,鼠标点中横坐标位置,然后图形下方编辑框内会跳出X Axis等坐标的编辑区域,在下面选择红框内按钮Ticks编辑横坐标数值。
4、进入X ticks编辑区域,可以看到一个两列的数据,左边是现有的数据坐标值,右边是对应的数据,在右边区域内修改想要显示的数据即可。
5、数据修改完成后,点击确定后回到线形图界面后,可以看到横坐标数据发生了变化。
参考技术A第一种方法:
直接将原来画图的x数据加上800后再画图
第二种办法:
在原的图画完之后加一句
set(gca,'xticklabel','800','900','1000','1100','1200','1300');
第二种办法,如果x轴上显示坐标的个数超过6个的时候,第7个后面又重新从800、900开始,而第一种办法不会这样。
扩展资料:
matlab画图技巧:
1、将两个图画在同一坐标系下
放在同一坐标系下便于比较异同
主要运用matlab中的 hold on , 基本代码如下:
x=0:0.001:3*pi
plot(x,sin(x),'r')
hold on
plot(x,cos(x),'g')
hold off
xlabel('x'),ylabel('y'),legend('sin','cos')
2、双y轴
拥有共同的x,建立两个y轴
主要利用matlab中plotyy这个基本函数,基本代码如下:
figure,
x=0:0.001:3*pi
a=plotyy(x,sin(x),x,cos(x))
ylabel(a(1),'sin(x)')
ylabel(a(2),'cos(x)')
参考资料来源:百度百科-MATLAB
参考技术B首先先画出图形,再画出需要在横坐标标出的点的位置,最后将这些点改成其他任意数字或字母,位置保持不变。代码如下:(其中%部分为把其中一点标记出来)(也可将代码修改为三维图
)
x=1:0.1:125;
a=1:0.1:200;
y=x.^(1/2);
z=a.^(11/20);
plot(a,z,'r-','LineWidth',1);
hold on
plot(x,y,'b-','LineWidth',1);
legend('unbounded accumulator','else'); % legend 会自动根据画图顺序分配图形
axis([0,200,0,30]);
set(gca,'Xtick',[0 25 50 100 125 150 200],'Ytick',[30/8,30/8*2,30/8*3,30/8*4,30/8*5,30/8*6,30/8*7,30],'fontsize',12);
%set(gca,'Xtick',[0,20,40,60,80,100,120,140,160,180,200],'Ytick',[30/8,30/8*2,30/8*3,30/8*4,30/8*5,30/8*6,30/8*7,30],'fontsize',12);
x0=125;
y0=x0.^(1/2); %曲线上的一点
plot([x0 x0],[0 y0],'b--');
%set(gca,'Xticklabel','0','10','20','30','40','50','60','70','80','90','100','Yticklabel','1','2','3','4','5','6','7','8');
ylabel('time(s)');xlabel('number of elements');
set(gca,'Xticklabel','0','100','200','\\itN-100','\\itN','\\itN+100','∞','Yticklabel','1','2','3','4','5','6','7','8');
直接将原来画图的x数据加上800后再画图
第二种办法
在原的图画完之后加一句
set(gca,'xticklabel','800','900','1000','1100','1200','1300');
第二种办法,如果x轴上显示坐标的个数超过6个的时候
第7个后面又重新从800 900 。。。开始
而第一种办法不会这样本回答被提问者采纳
以上是关于matlab 鼠标指针坐标怎样显示的主要内容,如果未能解决你的问题,请参考以下文章
如何使用画布和javascript同时绘制线条在鼠标指针顶部显示x和y坐标
在MATLAB二维图中,随鼠标移动,显示该点的坐标信息,如何做到?谢谢大家,在线等