MATLAB在作图中的常见问题

合集下载

Matlab中的细节问题及技巧(持续更新)

Matlab中的细节问题及技巧(持续更新)

Matlab中的细节问题及技巧(持续更新)接触Matlab是从⼤⼆开始的,但那时对数字信号处理不怎么感兴趣,因此⼀学期下来,连编写⼀个最基本的function都不会……⼤三开始学习数字图像处理,⽆奈,只好重拾Matlab。

虽然Matlab的交互界⾯做的很好,Manual尤其强⼤,但由于基础不好,在写程序时还是不时地被细节问题困扰,因此决定⽤此⽂来记录那些让我不胜其烦的细节问题,同时也分享给⼤家1. 在进⾏图像处理时常常会⽤到图像的长宽像素信息,⼀般语句为[M N]=size('figurename'); 这⾥M是图像⼆维矩阵的⾏数,N是⼆维图像的列数。

⽐如下⾯的图像,是⼀个5*8⼤⼩。

学过framebuffer的同学应该知道,对于显⽰屏,⼀般的坐标是从左向右是x坐标,从上到下是y坐标,因此对于图像来说N表⽰的是x⽅向上的⼤⼩,M表⽰y⽅向的⼤⼩。

如果不注意,在进⾏图像⼏何变换时要注意。

否则常常会把因为习惯问题把M误以为是x⽅向的,⽽N是y⽅向的。

2.关于Matlab中变量的类型问题。

在Matlab中,我们处理的是整数坐标,但Matlab中像素值本⾝并不是整数,在Matlab和IPT为表⽰像素值所⽀持的数据类型有以下10种:①double 8byte/pix②uint8 1byte/pix 平时我们⽤imread读出图像时⼀般都是这个类型的③uint16 2byte/pix④uint32 4byte/pix⑤int8 1byte/pix⑥int16 2byte/pix⑦int32 4byte/pix⑧single 4byte/pix⑨char 2byte/pix第⼗种只有在⼆值图像中才会⽤到,即logical类的。

logical型虽然只⽤1bit就可以表⽰,但在Matlab中却需要占⽤1byte。

为嘛?其实我也不清楚,可能Matlab不能像C⼀样进⾏位操作吧。

我们知道,Matlab内部是以double类型进⾏计算的,因此在初始化⼀个变量时,如果不指定你要给变量赋什么类型的值,它就默认是double型的。

MATLAB调试与错误处理技巧

MATLAB调试与错误处理技巧

MATLAB调试与错误处理技巧导语:MATLAB是一款功能强大的科学计算软件,广泛应用于各个学科领域。

在使用MATLAB编写程序时,难免会遇到各种错误和bug。

本文将介绍一些常见的MATLAB调试技巧和错误处理方法,帮助读者更加高效地解决问题。

一、错误分类与调试技巧1. 语法错误:在编写MATLAB代码的过程中,很容易出现语法错误。

这些错误可能由于拼写错误、括号不匹配、运算符错误等引起。

一种常见的调试方法是认真查看错误提示信息,并逐行检查代码中可能存在问题的地方。

有时候,手动注释掉一些代码也能帮助找到错误所在。

2. 运行时错误:当程序运行至某个语句时出现错误,我们称之为运行时错误。

常见的运行时错误包括零除错误、数组越界错误等。

为了快速定位和解决这类错误,我们可以利用MATLAB提供的调试工具,如断点调试功能和变量追踪功能。

通过设置断点,在程序执行到指定语句时暂停,我们可以查看和修改变量的值,进一步分析错误产生的原因,从而进行修复。

3. 逻辑错误:逻辑错误是指程序在运行过程中逻辑错误的结果。

这类错误比较隐蔽,需要通过与预期结果的对比来发现。

为了避免逻辑错误,我们可以使用一些技巧,如利用MATLAB提供的assert函数进行断言,编写详细的注释和说明,以及对关键变量进行可视化输出等。

此外,运用单元测试和边界测试的方法也能够有效检测逻辑错误。

4. 内存错误:在大规模数据处理和复杂计算中,内存错误是常见的问题。

过多的变量和占用过大的内存在运行过程中可能导致程序崩溃或内存耗尽。

为了解决内存错误,我们可以通过清理不需要的变量和释放占用内存的资源来释放内存空间。

此外,使用MATLAB提供的分段计算方法,将大型任务拆分为多个小任务,也可有效减少对内存的消耗。

二、错误处理方法1. 异常处理:异常是指在程序运行过程中发生了不可预期的错误。

MATLAB提供了异常处理机制来处理这类错误。

通过在代码中使用try-catch结构,我们可以捕捉到可能出现的异常,并进行相应的处理。

MATLAB常见问题问答

MATLAB常见问题问答

Matlab 常见问题问答1.Q:如何在给定句柄的axis 里绘图?A:plot(data,'parent',haxis);或者hbar=bar(data);set(hbar,'parent',haxis);2.Q:Matlab 中如何作线性拟合/线性回归/多元线性回归?A:何作线性拟合是用y=a*x+b 来拟合一组数据{{x1,y1},{x2,y2}…{xn,yn}},Matlab 中使用polyfitx=data(:,1);y=data(:,2);p=polyfit(x,y,1);p(1)为斜率a,p(2)为截距b多元线性回归即用y=a1*x1+a2*x2+..+am*xm来拟合数据点{x1i,x2i,…xmi,yi} (i=1~n)|x11,x21,…xm1|A=|x12,x22,…xm2||…………… ||x1n,x2n,…xmn|Y={y1,y2,y3,…,yn}'则系数{a1,a2,…,am}'=pinv(A)*Y。

在Matlab 中使用coeff=A\Y 则可以得到最小二乘意义上的拟合系数3.Q:Matlab 中如何作二维数据的插值?A:对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,二维、三维非规则数据用griddata/griddata34.Q:Matlab 中如何计算程序运行的时间?A:ticyour_code;toc或者使用:t=cputime;your_operation;cputime-t5.Q:如何在Matlab 中实现交互操作?A:如果只在命令窗口进行交互操作,请参见demo 中的例子,主要是通过input 命令和pause/clear/disp 等实现的,还有一些窗口资源可以使用:uigetfile, uiputfile, uiwait, uisetcolor, isetfont, uiopen, uisaveinputdlg, msgbox, helpdlg, questdlg, warndlg, errordlg6.Q:Matlab 中为什么只能在小数点后显示四位?A:用format 命令来改变命令窗口数字的显示格式和精度,但不会影响Matlab 的计算精度,Matlab 的矩阵运算默认都是双精度浮点型运算。

MATLAB常见绘图问题及解决方法

MATLAB常见绘图问题及解决方法

MATLAB常见绘图问题及解决方法一、引言MATLAB作为一种强大的科学计算和数据可视化工具,广泛应用于各个领域。

在进行数据分析和可视化过程中,经常会遇到一些绘图问题。

本文将针对一些常见的绘图问题进行探讨,并提供相应的解决方法,帮助读者更好地使用MATLAB进行数据可视化。

二、数据处理与准备在进行绘图前,首先需要对数据进行处理和准备。

常见的问题包括数据清洗、数据类型转换以及数据筛选与排序等。

在MATLAB中,可以使用各种功能强大的函数来解决这些问题。

例如,可以使用"readtable"函数读取Excel中的数据,并使用"table2array"函数将表格转换为数组。

此外,还可以使用"sort"函数对数据进行排序,或者使用"unique"函数去除重复值。

三、基本绘图函数的使用MATLAB提供了丰富的基本绘图函数,如"plot"、"bar"、"scatter"等,可以根据需求选择适合的函数进行绘图。

然而,在使用这些函数时,也会遇到一些常见的问题。

1. 如何设置坐标轴范围在绘制图形时,经常需要设置坐标轴的范围,以确保所展示的数据能够完整显示。

可以使用"xlim"和"ylim"函数来设置x轴和y轴的范围。

例如,使用"xlim([0,10])"将x轴范围设置为0到10。

2. 如何设置坐标轴标题为了使图形更加清晰明了,可以为坐标轴添加标题。

可以使用"xlabel"和"ylabel"函数来设置x轴和y轴的标题。

例如,可以使用"xlabel('时间(s)')"来为x轴添加标题。

3. 如何添加图例在绘图时,可能同时展示多条曲线或者多个数据集,此时需要添加图例以区分不同的曲线或数据。

MATLAB在作图中的常见问题

MATLAB在作图中的常见问题
10

11
12
7.双Y轴曲线的坐标标注

我们注意到MATLAB命令窗的画兰颜色的 那一行, String = 这是加入文本信息的一个参数选项。
为此我设计了如下的语句:
13
8.双Y轴曲线的坐标标注


所用的几行语句: d1=get(H(1),'ylabel'); set(d1,’string’,’sin(x)’); d2=get(H(2),’ylabel’); set(d2,’string’,’exp(x)’); xlabel(‘x zjliu’) 得到的图形如下:
1.画图函数句柄的使用

每个画图函数含有的输入参数是很多的, 然而我们在看函数的帮助(help)的时候,所 能得到的只是一些基本的信息。我们利用 dd = function_name(x,y,z,…); dt=get(dd) dt就含有了这个函数的全部使用信息。 请看下面的例子:
1
2
3
2.一些常用的句柄


这里常用的两个函数是get和set。 get 是获得相应的句柄信息; set 是进行设定; gcbo :返回当前指向正在被调用的对象的句柄 findobj 可以查找图形对象
在使用set设定的时候,注意参数的类型,如字符 型、double型、还有结构数组等。
5
4.双Y轴曲线的绘制

以下是做两个函数: y1=sin(x); 0<x<2*pi y2=exp(x); 0<x<2*pi 的三条语句:
xlabel(‘t^{hit}’); %标注上脚标 xlabel(‘Y_{Lib}’); %标注下脚标 花括号{}的作用是使多个字符都处于相同的状态。

matlab常见问题集锦

matlab常见问题集锦

Q:10.如何使用matlab将数据模糊化并输出模糊化结果?
A:模糊综合评价法,fuzzy logic Q:11.如何用matlab做非等间隔信号的功率谱密度变换?
A:可以的,不过是不是幅值的绝对值的平方,是求其模值就可以了,因为它 是复数
matlab常见问题集锦
更新时间:2014-7-23
Q:1.想从矩阵中取任意行的数据, 比如A=[1; 2; 3; 4; 5; 6; 7; 8], 如何从A 中任意取4行的数据呢? 谢谢!
A:
nd=randperm(10);
for k=1:4 a(k)=A(ind(k));
end
这个是针对你的向量形式,如果是矩阵可以修改一下 [m,n]=size(A);
A:如果再运行这个m文件运行一次,就得关闭matlab 《----- 你需要把这句话在仔细解释一下 运行完了 得到结果了 为什么 不能清理变量,不关闭每次都crash吗?感觉是你的程序有些资源是必须 要释放了以后才能再次使用 还有2G 是比较小了 有可能是内存问题
Q:我要表达的意思是,第一次运行这个m文件,能运行成功,如果再运行 一次,就不成功,出现上面的提示;我处理250个文件时,这个m文件有 时能运行多次,有 时不能运行多次,你这么一提示,我感觉也是我的程 序需要把有些资源释放了才能再次使用,但是使用了clear all也不好使 ,在程序开始和末尾都使用clear all,还是出现我在上面说的问题 A:很可能说你有些文件句柄没有关闭
A:这段代码如果卡死,最大的可能就是while陷入了死循环。说明在for i = 1:n-1这段循环结束之后,dz无法满足while的退出条件(可能是太小或 太大)。你需要重新检查你的算法和数据。
Q:3.find可以查到第一个满足条件的就退出吗? 如题,想找矩阵R里第一列中第一个>=t的数,写的程序如下: A=find(R(:,1)>=t) S=A(1,:) D=R(S,:) 但是特别浪费时间,所以想问问应该怎么写好。万分感谢!

matlab常见错误以及解决办法

matlab常见错误以及解决办法1.Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。

注:matlab 的语法规定矩阵的索引从1 开始,这与C 等编程语言的习惯不一样。

解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。

2.2.Undefined function or variable "U" 中文解释:函数或变量U 没有定义 .出错原因及解决办法:可能变量名输入错误,仔细检查 33..Matrix dimensions must agree 中文解释:矩阵的维数必须一致出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。

matlab 通过“.”来区分矩阵运算和元素运算。

解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致。

4.4.Function definitions are not permitted at the prompt or in scripts 中文解释:不能在命令窗口或者脚本文件中定义函数出错原因:一旦在命令窗口写function c = myPlus(a,b),此错误就会出现,因为函数只能定义在m 文件中。

关于脚本文件和m 文件的区别请查阅matlab 基础书。

简言之: 1) 如果你写成function 的形式,那么必须写在m 文件中,且以function 开头(即function 语句前不能包含其他语句,所有语句必须放在function 中,当然,function 的定义可以有多个,各function 之间是并列关系,不能嵌套);2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在m 文件中,但两者均不能包含function 语句(即不能进行函数的定义)解决办法:新建一个m 文件,然后再进行函数的定义5. 5.One or more output arguments not assigned during call to '...' 中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。

MATLAB绘图中常见问题及解决方法

MATLAB绘图中常见问题及解决方法概述:MATLAB是一种功能强大的数值分析和绘图工具,广泛应用于科学研究、工程应用和数据可视化领域。

然而,在使用MATLAB绘图的过程中,我们可能会遇到一些常见问题。

本文将针对这些问题提供解决方法,帮助读者更好地使用MATLAB进行绘图。

问题一:图像显示不清晰有时候,我们在绘制图像后发现其显示效果不够清晰,无法满足我们的需求。

这可能是由于图像分辨率较低导致的。

为了解决这个问题,我们可以使用MATLAB提供的improveResolution函数来提高图像的分辨率。

该函数可以通过调整图像的大小、分辨率和显示参数来改善图像的清晰度。

问题二:图像颜色不够美观有时候,我们在绘制图像时发现颜色不够美观,难以准确传达所要表达的信息。

为了解决这个问题,我们可以使用MATLAB提供的colorbar函数来调整图像的颜色映射。

通过选择合适的颜色映射方式,我们可以让图像的颜色更加鲜艳、明亮,提高图像的观赏性和可读性。

问题三:图像尺寸不符合要求有时候,我们在绘制图像时发现图像的尺寸过大或过小,不符合我们的要求。

为了解决这个问题,我们可以使用MATLAB提供的resize函数来调整图像的尺寸。

通过设置合适的缩放比例,我们可以将图像的尺寸调整到符合要求的大小,以便更好地展示图像的细节和特征。

问题四:图像坐标轴显示不正确有时候,我们在绘制图像时发现坐标轴的刻度和标签显示不正确,难以准确表示数据的范围。

为了解决这个问题,我们可以使用MATLAB提供的axis函数来设置坐标轴的显示范围和刻度。

通过设置合适的显示范围和刻度间隔,我们可以让坐标轴更加准确地表示数据的分布和变化趋势。

问题五:图像细节显示不清楚有时候,我们在绘制图像时发现细节部分显示不清楚,无法准确表达图像的特征。

为了解决这个问题,我们可以使用MATLAB提供的zoom函数来放大图像的细节部分。

通过调整放大比例和显示参数,我们可以让图像的细节部分更加清晰可见,以便更好地观察和分析图像所包含的信息。

Matlab常见问题汇总和编程实例精资料

1.良好的编程习惯,程序文件开头一般添加复位的命令clear%清除内存变量clc%清除屏幕close all%关闭所有图像窗口2.读取文件的数据actinfo0=importdata('Lincese1\actinfo.dat');% 读取Lincese1文件夹下actinfo.dat文件的数据3. 获得当前电脑主机名[a,hostname0]=dos('hostname');4.判断两个字符串是否相同,字符匹配strcmp('3455','3455') %判断两个字符串是否完全匹配strncmp('3455','3455',3)%判断两个字符串的前n个字符是否匹配5. 读取图片三维数据,显示图片p1=imread(pathicon);%获得和读取图片三维数据image(p1)%显示图片6.字符类型转换小结dircell=struct2cell();%结构型转变为胞元类型idchushi=char();%转变为字符格式indexstr=num2str(index);%数值型转变为字符串bindex=str2num(cell2mat(zbindex)); %字符串转变为数值型suoyoudata3=cell2mat(dqjcidsuoyoudata(:,9:end)); %胞元转变为dobule数值型str2double(zbbzlow{i})%字符串转变为数值型7.获得文件夹下的文件名dir('picture1\*')% 获得picture1文件夹下的所有文件名dir('picture1\*.jpg') % 获得picture1文件夹下的JPG格式的所有文件名8.设置图形窗口名称、是否显示工具栏菜单栏,是否可以缩放set(f,'toolbar','none','menubar','none','color',[0.7 1 0.6],'resize','off','name','Activation');9.弹出窗口,警告信息msgbox('软件已经在其他电脑上安装并激活,无法在本电脑上使用','错误信息','error');相似的命令还有:dialog, errordlg, helpdlg, inputdlg, listdlg, questdlg, warndlg10.修改GUI界面或者图形窗口左上角的matlab系统默认图标javaFrame=get(f,'JavaFrame');javaFrame.setFigureIcon(javax.swing.ImageIcon(pathicon));11.设置GUI界面或者图形窗口的菜单项和子菜单项目%设置菜单项menufile=uimenu('label','文件');meunhelp=uimenu('label','帮助');%设置菜单子项menustart_item1=uimenu(menufile,'label', '新建','callback',['clear,clc,close,', function]); menustart_item2=uimenu(menufile,'label', '打开','callback',['clear,clc,close,',function]);12. 设置GUI界面或者图形窗口的背景图片icon=axes('position',[0 0 1 1],'units','normalized');uistack(icon,'down');picture=imread(pathbackground);image(picture);colormap grayset(icon,'handlevisibility','off','visible','off');13. 设置GUI界面或者图形窗口的各类控件b_exit=uicontrol(gcf,'style','pushbutton','string','退出','units','normalized','position',[0.75 0.2 0.18 0.08],'fontsize',12,'backgroundcolor','w','callback','clear,clc,close');14.读取txt格式文件数据textread(idstartpath)textread(idstartpath,'%s')%以字符型格式读取15.字母a-z,A-Z的简便表示方法char([65:90,97:122]) % a-z,A-Z16.删除文件夹下的某个文件path1=['Lincese1\edocs','.dat'];%文件路径delete(path1);% 删除文件17.文件的打开,写入,关闭file=fopen(path1,'w');fprintf(file,'%c',ss);fclose(file);18.设置和获得GUI控件的属性set(jielunkj,'string',’OK’);%设置控件句柄为jielunkj的名称为OK get(zhishideng,'backgroundcolor') %获得控件的背景颜色get(brun2,'string'); %获得控件的名称字符set(zhishideng,'backgroundcolor',[1 1 0]); %设置控件的背景颜色19.时间类型,获得当前时间now%获得当前时间cidcjsjdata=datestr(now,31);%当前时间的char字符型shijiandian=datenum(shijiandian);%转变成时间格式,以小时为单位类似的命令还有:clock, date20.判断是否的命令isempty(index) %判断该变量是否为空exist('yichangxxjl','var') %判断该变量yichangxxjl是否存在ishandle(hwarn) %判断该变量hwarn是否是句柄类似的命令还有:ismember, issorted21.延时,或者暂停2秒钟pause(2);pause22.保存变量到文件中%保存变量idchushi到以idstartpath为路径的文件中dlmwrite(idstartpath,idchushi,'%s')23.简单的GUI界面fyc=figure;set(fyc,'toolbar','none','menubar','none','position',[370 130 620 540]);set(fyc,'numbertitle','off','name',item3yc);24.对变量进行排序,获得将序排列的向量和原始位置索引[ppdu,ppindex]=sort(rateij,'descend');25.两个向量取交集intersect(childhindex1,childhindex2);26.计时器,获取程序运行时间tic%计算程序运行的时间,两个命令成对使用toc27.图像分区域显示axe1=axes('units','normalized','position',[0 0 1 1],'parent',panel2);subplot(231)subplot(232)subplot(233)subplot(234)subplot(235)subplot(236)28.matlab运用JDBC方式连接SQL数据库,并读取数据%在Matlab用JDBC驱动连接SQL Server 2008(其他仅连接符url和driver不同)%在运行此段代码前先确保配置好了JDBC驱动,方法如下:%1.Microsoft官网下载sqljdbc3.0驱动——Microsoft SQL Server JDBC Driver 2.0.exe(4M左右)%2.解压后能看到sqljdbc4.jar和sqljdbc.jar文件,针对电脑上JDK的版本选择导入文件,如JDK6.0导入sqljdbc4.jar%3.在command windows中输入:edit classpath.txt 打开路径配置文件在文件最后一行添加sqljdbc4.jar的完整路径,%(不能同时加载sqljdbc4.jar和sqljdbc.jar的路径,否则不能正常连接数据库)。

Matlab基本使用的一些常见问题[精选]

Matlab基本使用的一些常见问题0我也是最近刚刚接触MATLAB,不得不说MATLAB绝对是一款功能强大的矩阵计算仿真软件!尤其是对通信工程专业的学生,学习好MATLAB更是十分重要的!0然而,在平时的学习中,我们一般安装的都是MA TLAB7.0,而该版本在当今流行的操作系统下是有些问题的,就平时可能遇到的一些问题,给新接触的同学们分享一些经验!0问题一:使用AMD的cpu的电脑无法安装matlab 0情况(1):无法打开安装程序0原因:电脑的环境变量有问题,电脑的用户名是中文的,而MA TLAB默认的安装目录和环境变量目录都不能出现中文0解决办法:设置环境变量,右击“我的电脑”-“属性”-“高级”-“环境变量”,把用户自定义环境变量中TEMP 和TMP值都改为C:/Temp然后在C盘下建一个C:/Temp 目录。

0情况(2):打开MA TLAB后闪一下自动关闭0原因:MATLAB要用到CPU的数学计算模块,而MATLAB默认的是INTEL的CPU,所以速龙或者是闪龙的CPU一般都会遇到安装好后打开自动关闭的问题。

0解决办法:1、安装好后(假如安装在D:\盘中),先确认在此安装路径下D:\\Matlab\bin\win32有一个atlas_Athlon.dll的文件(AMD系列的要用这个)2、然后在“我的电脑”上右击点“属性”,再在“高级”中点“环境变量”,在“系统变量”中“新建”,变量名:BLAS_VERSION变量值:D:\Matlab7\bin\win32\atlas_Athlon.dll0情况(3):打开MA TLAB后又会出现一些英文提示,出现如下---The element type "name" must be terminated by thematching end-tag "</name>". Could not parse the file:d:\matlab\toolbox\ccslink\ccslink\info.xml.0解决办法:找到matlab7\toolbox\ccslink\ccslink\info.xml这个文件,用记事本打开这个文件,找到有一行这样的<name>Linkfor Code ComposerStudio?/name>,把这句的/name>改成</name>,再保存一下这文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
25
26
15.坐标值的修改
(2)修改坐标 语句实现: 我们用axes句柄的xticklabel (或yticklabel) 这一项就可以了。 看下面这一段程序:
27Βιβλιοθήκη 16.放大所画的图形MATLAB所画出的图形是其默认的大小,我们也 可以对图形的大小进行重新设定:
set(gcf,'position',[x0 y0 xL yL]);
19
11.图形标注的一些问题
下面以xlabel为例,讲一下常见的几个问题:
xlabel(‘t^{hit}’); %标注上脚标 xlabel(‘Y_{Lib}’); %标注下脚标
花括号{}的作用是使多个字符都处于相同的状态。
xlabel({‘zjliu’,‘on BBS’}); %多行标注
效果见下图:
11
12
13
7.双Y轴曲线的坐标标注
我们注意到MATLAB命令窗的画兰颜色的 那一行, String = 这是加入文本信息的一个参数选项。
为此我设计了如下的语句:
14
8.双Y轴曲线的坐标标注
所用的几行语句: d1=get(H(1),'ylabel'); set(d1,’string’,’sin(x)’); d2=get(H(2),’ylabel’); set(d2,’string’,’exp(x)’); xlabel(‘x zjliu’) 得到的图形如下:
'fontsize',20,'color','Magenta') xlim([0 2*pi]); 效果见下页:
17
18
10.图形标注的一些问题
常用的几个标注的函数是: text; xlabel (ylabel, zlabel); title 在标注的时候字体,位置以及方向等可以 使用MATLAB自己默认的,也可以自己去 设定。
9
10
6.双Y轴曲线的标注
上面的三屏显示中我们注意一下用红条标出的一行语句:
YLabel = [107.001] 而我们知道函数ylabel是一个坐标轴标注的函数,而这里 它确实作为一个plotyy函数的一条信息,实际上它是一个 子句柄。 写下如下两行语句: >> d1=get(H(1),'ylabel'); >> get(d1) 会得到如下的一些信息:
20
21
12.图形的保存
我们可以直接在figure框上选取相应的菜单条进行图形保 存,可是在运行时间很长的程序中用命令实现图形的 “自动”保存,会节省我们的时间,带来方便。相应的 语句是: h=figure; ……………….. saveas(h,’zjliu’,’jpg’); saveas(gcf, 'output', 'bmp'); 在MATLAB中支持的图片格式很多,有.bmp, .jpg, .tif, .eps 等格式。
以下是做两个函数: y1=sin(x); 0<x<2*pi y2=exp(x); 0<x<2*pi 的三条语句:
>>[H,Ha,Hb]=plotyy(0:.1:2*pi,sin(0:.1:2*pi),0:.1:2*pi,exp(0:.1:2*pi)); >> legend([Ha,Hb],'sin(x)','exp(x)',0) >> set(Ha,'linestyle',':')
2
3
4
2.一些常用的句柄
gcf – 当前图形(figure)的句柄; gca – 当前坐标轴(axes)的句柄; gco – 当前对象(object)的句柄;
注:当前对象有时需要人为地确定一下,这个操作我们 可以用鼠标去确定,点击一下要确定的对象(这个对象 可以是一条曲线、一个标注)就可以了。
5
3.利用句柄修改图形
这里常用的两个函数是get和set。 get 是获得相应的句柄信息; set 是进行设定; gcbo :返回当前指向正在被调用的对象的句柄 findobj 可以查找图形对象
在使用set设定的时候,注意参数的类型,如字符 型、double型、还有结构数组等。
6
4.双Y轴曲线的绘制
所得图形见下图:
31
32
15
16
9.绘制图上图
有时为了需要,需要在图上画图,可能是为了局部放大,或其他目的。 看如下这段程序:
figure; t=0.1:.1:2*pi;y=sin(t)+exp(t); plot(t,y,'--'); title('绘制底图') axes('position',[0.25,0.45,0.4,0.3]) plot(t,sin(t),'r:',t,cos(t),'g-.') title('绘制图上图','fontName','楷体_GB2312',...
22
13.坐标轴方向的修改
MATLAB中默认的坐标轴方向是(二维情况): Y轴:向上; X轴:向右。 这里将用下面一段程序实现坐标轴的方向 调整
23
24
14.坐标值的修改
有时为了需要,对画出的曲线需要修改坐 标轴的坐标,下面列举一下几种情况: (1)除去刻度
方法1:编辑图的axis属性,可以去掉坐标值 方法2:语句实现 A=cell(1,6); set(gca,‘YTickLabel’,A);set(gca,'XTickLabel',A) 效果见下图:
图形如下:
7
8
5.双Y轴图形的标注
在前面的画图语句中:
>> [H,Ha,Hb]=plotyy(0:.1:2*pi,sin(0:.1:2*pi),0:.1:2*pi,exp(0:.1:2*pi));
这里的H,Ha,Hb就是相应的句柄; 我们可以用get(***)获得它们的信息,这里面H是一个 1x2的double array型数据。我们直接get(H)是不可以的, 这样get(H(1))就可以了,得到的结果如下:
30
18.对数刻度曲线图的绘制
用loglog函数可以实现双对数坐标轴的绘制,例子: subplot(121) t=0:.1:3*pi; loglog(2+cos(t),2+sin(t)) subplot(122) plot(2+cos(t),2+sin(t)) set(gca,'YScale','log') set(gca,'XScale','log') set(gca,'Xdir','Reverse')
MATLAB在作图应用中的若干 问题
1
1.画图函数句柄的使用
每个画图函数含有的输入参数是很多的, 然而我们在看函数的帮助(help)的时候,所 能得到的只是一些基本的信息。我们利用 dd = function_name(x,y,z,…); dt=get(dd) dt就含有了这个函数的全部使用信息。 请看下面的例子:
set(gcf,'outerposition', get(0,'screensize')); % 最大化
28
17.坐标轴标注的角度调整
有时需要对坐标轴标注的文字方向进行调 整,如下处理即可: a=xlabel('') set(a,'Rotation',35)
效果见下图:
29
相关文档
最新文档