MATLAB实现图形交互式缩放方法

时间:2024-01-26 点赞:49597 浏览:99463 作者原创标记本站原创

关于图形及数据及缩放方面的免费优秀学术论文范文,关于图形方面论文注释格式,关于MATLAB实现图形交互式缩放方法相关论文范文集,对写作图形论文范文课题研究的大学硕士、本科毕业论文开题报告范文和文献综述及职称论文参考文献资料下载有帮助。

摘 要 :研究了MATLAB中GUI界面下以鼠标拖放交互方式实现图形缩放问题,分析了不同条件和要求下用MATLAB实现图形缩放的方法和具体算法,阐述了在MATLAB中人机交互操作的具体实现方法.

关 键 词 :人机交互;缩放;区域选择;图形用户接口

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)33-7619-03

在实验中经常需要对获取的数据进行图形化分析,由于数据的时间分辨率高,绘制出来的数据细节难以观察,就需要对图形局部进行放大.实现图形用户界面下的交互式缩放就显得尤为重要.

1.MATLAB产生的图形

在使用MATLAB进行计算时,可能产生各种图形.图形数据的生成方式可分为由函数产生和由采样数据产生.由函数产生的图形数据是通过数学公式计算获得的.矢量图形的缩放不会导致图形失真,可以无限缩放.由采样数据产生的图形由于采样间隔的限制,图形放大到一定程度就会出现锯齿现象.对这类图形的缩放需要根据放大倍数分别采用不同的处理方法.MATLAB中绘图函数plot可以绘制上述两种方式产生的图形数据.如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图.

2.MATLAB提供的缩放功能

MATLAB自身提供了缩放函数zoom.zoom可以根据指定的放大倍数对图形进行缩放.在MATLAB命令创建的图形窗口中还可以工具栏中的放大缩小工具对坐标轴中的进行缩放.对于矢量图形,这样操作不会有问题.但是遇到非矢量图形,i当放大倍数达到一定值时,图形会失真.要想保证图形放大不失真,就需要进行特殊处理.

3.图形缩放算法

对于矢量图形,由于数学方程确定了坐标点,对于任意给定的x,通过数学方程f(x)获得确定的值y与之对应.对于非矢量图形,没有确切的数学方程,对于给定的x,想要知道对于的值y,就需要进行插值运算.

已知离散点上的数据集,即已知在点集X上对应的函数值Y,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值.

MATLAB中提供了多种一维插值方法:基于多项式的插值和基于快速傅里叶的插值.

一维多项式插值,具体的插值方法有:最近邻点插值、线性插值、三次样条插值、三次多项式插值.一维多项式插值通过函数interp1()实现.interp1()的一种调用格式如下:

yi等于interp1(X, Y, xi, method)

method可以下列方法之一:‘nearest’:最近邻点插值;‘spline’:三次样条插值;‘linear’:线性插值;‘cubic’:三次多项式插值.

选择插值方法时需要考虑方法的执行速度、占用内存大小和获得数据的平滑度.在速度上,Nearest最快,然后是Linear再到Cubic,最慢的是Spline.但是精度和曲线的平滑度恰好相反,Nearest甚至不连续.系统默认的插值方法的是Linear.

一维快速傅里叶插值通过函数interpft()实现.interpft()用傅立叶变换把输入数据变换到频域,再用更多点的傅立叶逆变换,变换回时域,实现时域数据采样增加.interpft()的调用格式:y等于interpft(x,n).其中n为采样数.

4.MATLAB中图形交互操作的实现

MATLAB提供图形用户界面开发工具Guide(graphical user interface development environment).在MATLAB的命令窗口输入“guide”命令启动图形编程界面.MATLAB的Gui对象支持键盘和鼠标事件.通过对事件进行响应而实现人机交互操作.在MATLAB中交互操作具体实现需要解决一下几个问题:鼠标位置获取;计算放大范围;提取范围内数据;插值计算.交互放大操作的流程图如图1所示.

4.1鼠标位置获取

MATLAB中的ginput函数可以接受鼠标和键盘输入.在坐标轴内部点击鼠标,即可获取鼠标所在点的坐标值.ginput提供了一个十字光标使我们能更精确的选择我们所需要的位置,并返回坐标值.ginput函数调用形式为:[x,y]等于ginput(n)或[x,y]等于ginput或[x,y,button]等于ginput(...).其中[x,y]等于ginput(n)读取n个坐标,[x,y]等于ginput无限读取坐标直到按下回车键,[x,y,button]等于ginput(...)返回x和y的坐标,以及button值(1等于左键,2等于中,3等于右)或者按键的ASCII码值.下面的代码实现鼠标位置的获取,并将两个点的位置存入数组中.

for i等于1:2

[xi,yi,but]等于ginput(1);

plot(xi,yi,'r.')

x(i)等于xi;

y(i)等于yi;

End

4.2计算放大范围并提取数据

利用上面获得的两点的位置可以计算出所要放大的数据区间.依据数据区间来读取数据文件中指定位置的数据.坐标点的值可能落在数据文件中某两个数据之间,在读取数据时需要进行判断,向上取临近值或向下取临近值.这需要根据两个坐标值的左右顺序确定.这里规定,左侧坐标值向下取值,右侧坐标值向上取值.这样获取数据可以满足缩放的范围要求.图2说明了数据范围的确定规则.

图2中,左侧鼠标在0.2和0.4之间,取值0.2;右侧鼠标在0.6和0.8之间,取值0.8.因此数据范围取[0.2:0.8].

4.3数据插值

通常信号采集的数据时间分辨率很高.有限倍数的放大,可以直接提取制定范围数据,使用plot函数绘制即可.而对于无级放大,就需要对数据进行插值.采样数据多以时间顺序存放.X为时间向量,Y为采样的物理量.物理量的时间分辨率为step,放大后的坐标轴最小刻度为tick,如果step>tick,则需要进行插值.一维插值有多种方法.其中线性插值的最为常用.下面的代码说明了插值具体实现.

x等于0:1:20;

y等于sin(x)+x2;

xi等于0:0.1:20;

yi等于interp1(x,y,xi,’linear’)

4.4 图形的缩放绘制

根据交互操作获取的图形缩放范围设置子图形的坐标轴,提取对应数据,进行数据插值,最后将数据绘制到新的坐标轴,即实现了数据的交互放大.MATLAB中函数axis用于坐标轴控制,可以人为设定坐标轴的各种属性.Plot函数用于绘制数据图形.下面的代码实现图形绘制.


Plot(xi,yi,’b-’);

5.结束语

本文针对MATLAB环境下图形交互缩放需求,利用MATLAB的GUI图形化编程工具实现交互式缩放,并针对图形放大中出现的失真现象,采用数据插值方法加以克服,对于实验结果可视化分析评估有较好的辅助作用.

相关论文

计算机图形学教学改革方法

本文是一篇计算机图形学论文范文,计算机图形学方面本科毕业论文范文,关于计算机图形学教学改革方法相关毕业论文格式模板范文。适合计算机图。

图形化教学方法

这是一篇操作系统方面毕业论文范文,与图形化教学方法相关毕业论文模板。是论文总结专业与操作系统及职业教育及高职教育方面相关的免费优秀。

一种谱的Matlab与VHDL代码转换方法

本文是一篇模块论文范文,关于模块方面毕业论文格式,关于一种谱的Matlab与VHDL代码转换方法相关在职研究生毕业论文范文。适合模块及蝶形及参。

VisualC++与Matlab混合编程方法的对比

本文是一篇可靠性论文范文,可靠性相关本科毕业论文范文,关于VisualC++与Matlab混合编程方法的对比相关大学毕业论文范文。适合可靠性及方法。

科技期刊图形处理方法

本文是一篇科技期刊论文范文,科技期刊类自考毕业论文开题报告,关于科技期刊图形处理方法相关本科毕业论文范文。适合科技期刊及画图及插图方。