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常见错误以及解决办法

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进行绘图。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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基本使用的一些常见问题[精选]

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>,再保存一下这文件。

MATLAB中常见问题解决方案大全

MATLAB中常见问题解决方案大全

MATLAB中常见问题解决方案大全引言:MATLAB是一种功能强大的数学计算软件,广泛应用于科学研究、工程设计和数据分析等领域。

然而,在使用MATLAB的过程中,我们经常会遇到一些问题和困惑。

本文将总结一些常见的MATLAB问题,并提供相应的解决方案,帮助读者更好地理解和应用这个工具。

一、MATLAB的安装问题解决方案1. 问题描述:安装MATLAB时遇到许可证问题。

解决方案:首先,确保已经获取到了有效的许可证文件。

然后,运行安装程序并按照提示进行操作。

若仍出现问题,可以尝试禁用防火墙、关闭杀毒软件,并以管理员身份运行安装程序。

2. 问题描述:安装过程中出现错误代码。

解决方案:错误代码通常会提供问题的具体描述,可通过MATLAB官方网站或谷歌搜索相关错误代码进行查找。

MATLAB官方网站提供了相应的解决方案和技术支持。

二、MATLAB的基础问题解决方案1. 问题描述:如何导入和保存数据?解决方案:可以使用`load`函数导入数据,使用`save`函数保存数据。

另外,MATLAB还支持其他格式的数据导入和导出,如`csvread`和`csvwrite`用于CSV格式,`xlsread`和`xlswrite`用于Excel格式等。

2. 问题描述:如何修改MATLAB的默认设置?解决方案:可以通过修改MATLAB的配置文件来实现。

通过运行命令`edit('matlabrc.m')`可以打开该文件,并根据需要修改默认设置。

三、MATLAB的数据处理问题解决方案1. 问题描述:如何处理丢失数据?解决方案:可以使用MATLAB提供的插值函数来处理丢失数据,如`interp1`和`interp2`等。

这些函数可以根据已有数据的趋势,推断出丢失数据的可能取值,从而填补空缺。

2. 问题描述:如何处理异常值?解决方案:可以使用MATLAB中的统计函数来处理异常值,如`mean`和`median`等。

matlab遇到的问题及部分解决办法

matlab遇到的问题及部分解决办法

Matlab中遇到的问题
一、内存问题:
运行程序时,我遇到过内存不足的问题,我的电脑是2GB 内存,通过查阅一些资料和逛论坛,得知可以通过以下几个方面解决部分问题:
1、内存升级;
2、及时清除无关变量;(已试)
3、有必要时使用稀疏矩阵,尤其对于一些包含0比较多的矩阵;
3、对于一些中间变量可以先save,保存在硬盘中,避免保存在工作空间引起内存不足,需要时再load,对于特别大的矩阵,可以分成几个小矩阵,用时使用相应的小矩阵。

等等。

(已试)
二、运算速度问题:
运行有些程序时,会感觉运行速度很慢,通过查阅资料和逛论坛,得知matlab不擅长循环操作,如果程序中有比较多的、比较大的循环语句,则运行速度会大大降低,通过下面一些方法可以解决一些问题(自己的理解与实践):
1、尽量少使用循环语句,可用向量化语句实现,对于循环嵌套难以向量化的,外层循环用循环语句,内层循环则向量化;(已试)
2、对于有些循环操作,能用函数实现的尽量用函数实现,比如矩阵元素求和等等;
3、对于循环里面矩阵赋值时,可以在循环外就先初始化一个全0或全1的矩阵,这样循环中就不用每次为矩阵开辟空间而浪费时间了;(已试)
4、对于有些情况,使用函数运算则比较慢,能用简单的运算符更好,比如求逆运算函数inv ,用左除‘\’则速度快很多。

等等。

(自己的经验)
00.10.20.30.40.50.60.70.80.9100.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
♠♥
♣♦♥♥→。

MATLAB图像处理中常见问题与解决方法

MATLAB图像处理中常见问题与解决方法

MATLAB图像处理中常见问题与解决方法在当今数字图像处理的领域中,MATLAB以其强大的功能和灵活性成为了许多研究人员和工程师的首选工具。

然而,即使使用MATLAB进行图像处理,也是不乏遇到各种问题和困难的。

本文将介绍一些在MATLAB图像处理中常见的问题,并提供相应的解决方法。

一、图像读取与显示问题在处理图像之前,首先需要将图像读取到MATLAB中,并显示出来。

然而,有时候我们会遇到图像读取失败或图像显示不清晰的情况。

这些问题往往与图像的格式和质量有关。

1. 图像格式转换常见的图像格式包括JPEG、PNG、BMP等。

在读取图像时,MATLAB并不支持所有的图像格式。

如果遇到图像读取失败的情况,可以尝试将图像转换为MATLAB支持的格式,如JPEG或PNG。

可以使用imread函数读取图像,并通过imwrite函数将图像转换为需要的格式。

2. 图像质量问题有时候图像在显示时可能会出现模糊、噪声或亮度不足等问题。

这些问题往往是由于图像的分辨率较低或者光照条件不好所导致的。

可以尝试使用imresize函数调整图像的分辨率,并使用imadjust函数调整图像的亮度和对比度。

二、图像增强与滤波问题为了提取图像中的信息或改善图像的质量,我们常常需要进行图像增强或滤波操作。

然而,选择合适的增强方法和滤波器、参数设置是一个具有挑战性的任务。

1. 直方图均衡化直方图均衡化是一种常用的图像增强方法,用于改善图像的对比度。

然而,当图像的动态范围很大或图像包含噪声时,直方图均衡化可能导致过度增强或噪声增强的问题。

可以尝试使用自适应直方图均衡化方法,如CLAHE算法,来解决这个问题。

2. 图像滤波图像滤波是一种常用的降噪和平滑图像的方法。

常见的图像滤波器包括高斯滤波器、中值滤波器等。

选择合适的滤波器和参数设置对于滤波效果至关重要。

可以通过尝试不同的滤波器和参数来达到最佳的滤波效果。

三、图像分割与特征提取问题图像分割和特征提取是图像处理中的重要任务,用于从图像中提取有用的信息。

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中遇到的一些问题1什么是Gaussian拟合?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/9/23, BigGreen/MathT ools # 高斯拟合(Gaussian Fitting)即使用形如:Gi(x)=Ai*exp((x-Bi)^2/Ci^2)的高斯函数对数据点集进行函数逼近的拟合方法。

其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,而高斯拟合是用高斯函数系。

使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。

这一点在很多领域都有应用,特别是计算化学。

著名的化学软件Gaussian98就是建立在高斯基函数拟合的数学基础上的。

2如何在给定句柄的axis里绘图?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/12, SMTH/MathTools #plot(data,'parent',haxis);或者hbar=bar(data);set(hbar,'parent',haxis);3)由Matlab符号运算得到的公式怎么才能将数据代进去运算?:#ramjet (德芙)2002/3/3, SMTH/MathTools #使用subs(),或先将值赋予一个符号变量,然后用eval()5)在Matlab中如何求最值点?如何求一维数组的极值?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/18, SMTH/MathT ools#最值:一维或多维数组最值用max(data(:))如果想返回最值所在的位置,用[Y,I]=max(data):#FangQ(Qianqian.Fang@/doc/7012532465 .html,), 2001/4/21,UESTC/Math#极值:data是你的数据,find(diff(sign(diff(data)))==-2)+1找到极大值的位置find(diff(sign(diff(data)))==2)+1找到极小值的位置data(find(diff(sign(diff(data)))==-2)+1)和data(find(diff(sign(diff(data)))==2)+1)返回的是极大值和极小值6)Matlab中如何作线性拟合/线性回归/多元线性回归?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/21, BigGreen/MathT ools #即用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则可以得到最小二乘意义上的拟合系数7)Matlab中如何作圆回归?:#Peter Boettcher (boettcher@/doc/7012532465.html,),2002/5/16, comp.soft-sys.matlab#Q5.5: How can I fit a circle to a set of XY data?====================================== ===========An elegant chunk of code to perform least-squares circle fitting was written by Bucher Izhak and has been floating around thenewgroup for some time. The first reference to it that I can find is in:function [xc,yc,R,a] = circfit(x,y)%CIRCFIT Fits a circle in x,y plane%% [XC, YC, R, A] = CIRCFIT(X,Y)% Result is center point (yc,xc) and radius R.A is an% optional output describing the circle's equation:%% x^2+y^2+a(1)*x+a(2)*y+a(3)=0% by Bucher izhak 25/oct/1991n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;A=[sum(x) sum(y) n;sum(xy) sum(yy)...sum(y);sum(xx) sum(xy) sum(x)];B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];a=A\B;xc = -.5*a(1);yc = -.5*a(2);R = sqrt((a(1)^2+a(2)^2)/4-a(3));Tom Davis provided a more sophisticated approach that worksfor more cases in and Code included.8)Matlab中如何绘制箭头?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/21, SMTH/MathT ools #到/doc/7012532465.html,/matlabcentral/fileexcha nge/index.jsp2-D Plotting and Graphics中查找arrow.m,或者/doc/7012532465.html,/matlabcentral/spot light/arrows.shtml/doc/7012532465.html,/~jec/matcomp/ma tcompmfiles/mfiles.html9)Matlab中如何作二维数据的插值?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/21, BigGreen/MathT ools #对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,二维、三维非规则数据用griddata/griddata310)Matlab中如何绘制三维数据阵?:#FangQ(Qianqian.Fang@/doc/7012532465 .html,),2002/6/21, BigGreen/MathT ools #如果使用matlab,打开帮助窗口,在目录树上找到MATLAB\Using Matlab\3-D Visualization: V olume Visualization Techniques如果图形复杂,建议使用Tecplot,参见Tecplot手册中数据格式,将你的三维数据读入Tecplot,双击zone,可以设置mesh/contour/surfacetransparency等。

Matlab编程常见错误与解决办法

Matlab编程常见错误与解决办法

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

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

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

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

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

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

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.One or more output arguments not assigned during call to '...'中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值出错原因:函数如果带有输出变量,则每个输出在返回的时候都必须被赋值。

Matlab常见问题解答汇总

Matlab常见问题解答汇总

Matlab常见问题解答汇总介绍:Matlab(Matrix Laboratory)是一种功能强大的高级技术计算软件,广泛应用于科学计算、数据分析和工程领域。

然而,在使用Matlab的过程中,不可避免地会遇到一些常见问题。

本文将对Matlab的常见问题进行解答汇总,帮助读者更好地应对各类困难。

一、安装与配置问题:1. 如何安装Matlab?答:Matlab官方网站提供了下载安装文件。

根据所使用的操作系统选择相应的版本,下载安装程序后,按照提示进行安装即可。

2. 如何激活Matlab?答:在安装完成后,打开Matlab软件,按照相应步骤输入产品密钥进行激活。

3. 如何配置Matlab的工作环境?答:可以通过设置Matlab的工作目录、命令窗口、编辑器等来配置工作环境。

可以在菜单栏中找到“设置”选项,对各项参数进行调整。

二、基础语法问题:1. 如何定义变量?答:在Matlab中,可以使用等号“=”来进行赋值操作,例如:a = 5;可以将5赋值给变量a。

2. 如何进行矩阵运算?答:Matlab是一种矩阵计算工具,支持矩阵的加减乘除等常见运算。

使用“+”、“-”、“*”、“/”等符号进行运算即可。

3. 如何使用循环?答:Matlab提供了多种循环语句,如for循环、while循环等。

可以根据具体需求选择合适的循环结构,并在相应位置编写循环体代码。

三、数据处理问题:1. 如何读取文件中的数据?答:Matlab提供了多种读取文件的函数,如fopen()、fread()、textscan()等。

可以根据文件的具体格式选择相应的函数进行数据读取。

2. 如何处理大型数据?答:在处理大型数据时,可以使用Matlab提供的分块处理函数,如matfile()、memmapfile()等。

这些函数可以有效地将数据分块加载到内存中,从而减少内存的占用。

四、绘图问题:1. 如何绘制二维图形?答:Matlab提供了丰富的绘图函数,如plot()、scatter()、bar()等。

MATLAB常见错误之总结--技能提升篇

MATLAB常见错误之总结--技能提升篇

目录1、GUI新手之——教你读懂GUI的M文件 (6)2、GUI程序中改变current directory引起的问题 (11)3、GUI中h0bject和handles 的区别 (12)4、handles结构中句柄和对象的关联问题 (13)5、Matlab利用定时器连续显示图片的问题 (15)5-1、GUI中实现在图片任意位置上标注text (18)5-2、使用edit的另外一种callback (18)6、MATLAB 如何实现图像的任意裁减? (18)7、坐标轴标注刻度、网格、文字方向 (19)8、Matlab中对uitable的操作:调节各列宽度,设定某列是可编辑的 (20)9、将在Matlab下编写的GUI转成独立于Matlab平台的应用程序 (21)10、要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件 (24)11、matlab GUI程序转换成exe可执行文件 (27)12、gui生成独立的应用程序的发布问题 (29)13、GUI控制simulink模块及参数的综合实例! (30)13-1、在axes显示图像后,在图像上单击鼠标时,回调函数的定义规则和使用方法 (31)14、如何在循环中加入waitbar,并在waitbar上添加‗取消‘按钮 (32)15、在matlab中对信号进行FFT变换 (34)16、动态显示figure中曲线的x-y坐标值的一个函数 (36)17、在GUI界面的打开按钮中,如何对文件进行操作 (38)18、Matlab不同控件之间的数据传递问题 (41)19、在edit box里输入相关数据后,直接按回车键,不用鼠标点击pushbutton 就可以直接执行 (42)19-1 GUI使用editbox输入数据后如何自动清除数据 (42)20、在GUI中,计算结果怎么用excel来保存到指定的文件夹中 (43)21、如何得到popupmenu选项中最后一个字符串的VALUE值 (45)22、回调函数互相调用的问题 (45)22-2string和number相互转换的问题 (46)23、这样的功能的pushbutton的callback怎么写呀,谢谢了 (46)24、GUI中axes使用subplot时的清空及axes大小的固定的解决方法 (47)25、退出GUI时如何把全局变量中的值清空? (49)26、从串口接受数据时,如何把波形绘制到指定的坐标轴上? (49)27、两个GUI之间如何传递数据 (51)28-1 几个有用的帖子 (53)28-2、GUI之间互相调用和关闭问题 (56)29、GUI timer定时器 (56)30、如何在循环中加入waitbar (57)31、如何连续读入图片!! (58)32、如何把此次输入的值保存为下一次初始化的值 (59)33、Matlab关于解决自动保存gcf的问题 (59)34-1、在matlab里面如何读取excel里面的数据或者写入数据 (61)34-2、在excel中连续输入数据。

在MATLAB中遇到的问题

在MATLAB中遇到的问题

humpsMATLAB中有一个内置函数是humps,该函数是下列函数的特例:当q=0.3,r=0.9和s=6的时候就是humps函数了。

humps函数到底有什么用呢?根据MATLAB的帮助,如下:>> help humpsHUMPS A function used by QUADDEMO, ZERODEMO and FPLOTDEMO.Y = HUMPS(X) is a function with strong maxima near x = .3and x = .9.[X,Y] = HUMPS(X) also returns X. With no input arguments,HUMPS uses X = 0:.05:1.Example:plot(humps)即该函数通常用于几个函数的测试工作,这个函数有个显著的特点就是在0.3和0.9处有很强的值变化,在相对较短的区间内展现出平滑和陡峭的曲线。

绘制humps函数可以使用如下简单的语句:>> x=0:0.001:1;>> y=humps(x);>> plot(x,y);>> grid on图形如下:首先,这个程序是可积的,而且更美妙的是可以有解析公式,这样得到精确结果就很简单了,然而,真正需要 使用这个程序可以测试数值积分的稳定性和计算精度,尤其是像quad 和quadl 函数的测试工作,如果你觉得自己写出什么比较高明的数值积分公式或者方法、函数,不妨用它来测试一把。

~GRID ON /OFF 显示或关闭画图中的个网线 具体的可以在MATLAB 中输入 help grid 查看Roots 函数用来求多项式的根一个N 阶多项式可以写成:()0111.....x P a X a X a X a N N NN ++++=-- P=[1 4 5 1]即: ()1543*)2(3^*)1(23+++=++x x x p x p x p rand 是产生一个0-1的随机数 size(x)是矩阵x 的大小(假设x 是2行3列的二维矩阵,那么size(x)返回2,3)rand(size(x))是生成一个与x矩阵大小一样的(2行3列)矩阵,里面的元素都是随机生成的0-1的数求解释matlab语言,看不懂什么意思,> x=-8:0.5:8; y=x'; X=ones(size(y))*x; Y=y*ones(size(x));R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;mesh(Z);colormap([1,0,0])x=-8:0.5:8;表示从-8到8以步长(间隔)0.5取数生成行数组(一行共33个数,-8 -7.5 -7.0......7.0 7.5 8)。

  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
相关文档
最新文档