关于Matlab作图的若干问题

      看到了北京一则新闻,想到如何测试双向镜子?百度之。

      

      只要做以下简单的测试:把你的指甲尖放在镜子表面,如果在指甲尖与倒映图像之间有间隙,那就是真的镜子。然而,如果你的指甲尖能直接碰触到指甲反射影像,当心!那就是双向镜了!

一、matlab里如何显示点的坐标?

  • 在图里显示点坐标

        

      工具栏中有一个 "Data Cursor"按钮,点击之,箭头变成小十字,点要显示坐标的位置,就出来了。

  • 采用字符串函数处理

       

  1: x=1+4*rand(1,5);
  2: y=2+2*rand(1,5);
  3: plot(x,y,‘o-‘)
  4: %text(x,y,s)就是在点(x,y)处显示字符串s、
  5: for i=1:length(x)
  6:     text(x(i),y(i),[‘(‘,num2str(x(i)),‘,‘,num2str(y(i)),‘)‘])
  7: %在(x,y)的每一点处添加文字,文字内容为(x,y)
  8: %其中每一点的x,y用num2str把数字转化成字符串
  9: end

      还可以这么写。

  1: x=1+4*rand(1,5);
  2: y=2+2*rand(1,5);
  3: plot(x,y,‘o-‘)
  4: for i=1:length(x)
  5: str1 =strcat(strcat(‘(‘,num2str(x(i))),‘,‘);
  6: str2 = strcat(num2str(y(i)),‘)‘);
  7: text(x(i),y(i),strcat(str1,str2))
  8: %在(x,y)的每一点处添加文字,文字内容为(x,y)
  9: %其中每一点的x,y用num2str把数字转化成字符串
 10: end

      还是第一个的好,因为他知道字符串的多种连接方式(text(x,y,s)就是在点(x,y)处显示字符串s)。

二、字符串连接

  • 用中括号将str1和str2像矩阵元素一样包含起来
  1: >> str1=‘ILoveYou‘;
  2: >> str2=‘Matlab‘;
  3: >> [str1,str2]
  4: ans =
  5: ILoveYouMatlab

      若想验证str1和str2确实被连接起来,可调用length函数测试生成字符串的长度。

  • 用strcat函数连接
  1: >> strcat(str1,str2)
  2: ans =
  3: ILoveYouMatlab

      或者采用下面的方式。

  1: strcat({‘Red‘,‘Yellow‘},{‘Green‘,‘Blue‘})
  2: ans =
  3:     ‘RedGreen‘    ‘YellowBlue‘
  4: >> {‘Red‘,‘Yellow‘}
  5: ans =
  6:     ‘Red‘    ‘Yellow‘

      下面就不一样了。

  1: >> strcat([‘Red‘,‘Yellow‘],[‘Green‘,‘Blue‘])
  2: ans =
  3: RedYellowGreenBlue

      可以看出这和plot([],[])的参数位置不一样。

  • 利用sprintf函数
  1: >> number=123;
  2: >> sprintf(‘%s%d‘,‘Fuck‘,number)
  3: ans =
  4: Fuck123

      利用class(ans)可以知道Fuck123的类型为char。

三、中括号与大括号区别

      大括号用于元胞数组,不明白,暂且不管,没找到资料。

四、散点图

      plot([x1,x2],[y1,y2])这样就懂了吧,看参数的意思,试验出来的。

      散点图除了scatter函数外,还有stem函数可以使用,其他的没查。

  1: >> y=x.^2;
  2: >> stem(x,y,‘fill‘);
  3: >> title(‘y=x^2散点图‘);

     

五、图的说明

      下面在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。

     

  1: figure(1);%参数必须是整数标量,所以必须采用set来设置标题栏“复杂的函数”
  2: %注意观察和titile的区别
  3: set(gcf,‘Name‘,‘复杂的函数‘);
  4: title(‘复杂地函数‘);
  5: %如果用axis初始化坐标范围,那么会提示没有初始化x,所以先其他方法初始化x,axis必须放在plot后
  6: %而且如果用axis已经生成的图片可能偏上或者偏下,所以axis不常用来设置坐标范围,只设置x就行了
  7: x=linspace(0,2*pi,1000);%xlim([0,2*pi])
  8: xlabel(‘x轴(m)‘);
  9: ylabel(‘y轴(m)‘);
 10: y1=0.2*exp(-0.5*x).*cos(4*pi*x);
 11: y2=2*exp(-0.5*x).*cos(pi*x);
 12: k=find(abs(y1-y2)<1e-2);
 13: %查找y1与y2相等点(近似相等)的下标
 14: x1=x(k); %取y1与y2相等点的x坐标
 15: y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);
 16:  %求y1与y2值相等点的y坐标
 17:  plot(x,y1,‘b‘,x,y2,‘r‘);
 18:  hold on
 19:  scatter(x1,y3);
 20:  legend(‘A曲线‘,‘B曲线‘,‘C曲线‘);%不能再加上C曲线,因为scatter和plot不属于同一个体系,会提示“未定义函数或变量 ‘x‘”
 21:  %plot(x,y1,x,y2,‘k:‘,x1,y3,‘bp‘);这个也可以标记出来点,如果不加p,那么低三个曲线就是折线图,不过没查到p啥意思
 22:  %不知道也没关系,会用替代方案也好
 23:  %axis([0 2*pi -1 5]);%注意里面还有中括号,否则一直提示"不是MATLAB表达式"
 24:  grid on

      图名标注可用:title(‘xx关系图‘)和set(gcf,‘Name‘,‘图片1‘)不一样,set设置的是图片标题栏,而前者设置显示在图片中心区域axis([0,22,0,3]);---显示范围为:X轴从0-22, Y轴从0-3显示。xlabel(‘电压(V)‘),ylabel(‘电流(A)‘) 分别表示在X轴下标示电压(V),Y轴旁标示“电流(A)”

legend(‘A曲线 ‘,‘B曲线‘,‘C曲线‘)  用于说明图中的曲线的说明,顺序和plot(x1,y1,x2,y2,x3,y3)的曲线1、2、3相同即可。

      问题来了,如何控制y轴显示精度(x轴用linspace第三个参数表示共几个,实际就内涵了精度,或者x=1:1:10,那么精度是1),y轴不能用x那样,就怕图形偏上偏下,所以我想的方法是先绘制一下,确定y轴范围比如1到6,那么再次加上y=1:0.5:6,这样就不怕偏上偏下,而且精度0.5。学习还是想一些简单的方法吧,不要遇到问题就想去找函数,个人感想而已。

六、绘制光滑曲线

       对于离散坐标点,scatter划散点图,plot划折线图,那么问题来了,如何让折线图平滑?

      参考http://philotack.blog.163.com/blog/static/37473423201010910230221/

时间: 2024-10-08 07:13:47

关于Matlab作图的若干问题的相关文章

Matlab作图及反锯齿

首先,推荐一个讲Matlab画图的链接,该文中的画图方法比较基础,入门很快. http://blog.csdn.net/wangcj625/article/details/6287735 下面给出一个例子. eg. 有两条曲线,X轴的区间是相同的,并且采样点个数相同.第一条曲线使用红色,第二条曲线使用绿色.需要标识出X轴坐标名称和Y轴坐标名称,还需要对标识出曲线名称. Matlab作图看上去是没有反锯齿的,但可以生成矢量图格式,比如pdf和eps等.再通过Corel Draw生成wmf格式的矢量

matlab作图导出为PDF去除留白插入latex

latex写论文时,一般为了图片不失真,引用的图片需要转为pdf格式.matlab作图,直接导出为pdf经常遇到有灰色底色,有大片留白等不符合要求的情况,此博介绍一种简单的方法,轻松导出图片. 此外,先提供一种以前用过比较笨的方法:1.将灰色的底色调成和图内一样的白色:2.用截图工具截图,然后用adobe acrobat pro 软件(比adobe reader功能更强的软件)进行粘贴,截图修改边框. 舍友还介绍了一种她常用的方法,但是我导出为pdf以后上下留白没有解决.介绍一下,可以一试,文件

MATLAB作图

MATLAB作图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB将几组不同的数据展示在同一张图片中,并设置图例.横纵坐标范围与名称.重新自定义横坐标刻度,并保存图片到指定位置. 1. MATLAB程序 clear clc x=1:10; y_1=[0.7 0.7 0.75 0.77 0.78 0.78 0.78 0.78 0.78 0.78]; y_2=[0.8 0.8 0.8 0.82 0.85 0.86 0.87 0.87 0.

Python 之 Python与MATLAB 作图小结

一.一般概念 图形系统就是用来实现所谓的可视化的.在学习具体的命令之前,先了解一个可视化的图形具有哪些特征,以及这些特征具有什么关系.有了一个宏观的了解之后,记住几个核心的命令,等遇到具体问题时候查询相关文档或者查看类似图形别人的代码即可.就以我们在纸上作图作为比拟: 首先,我们需要一张白纸.这张白纸,就是一个所谓的figure.我们可以给这个figure取一个名字,写在这张纸的正中间.如果这是一系列纸中的一张,可能还会给它一个标号,比如第1页.第2页. 然后,我们在这张纸上确定把图画在什么位置

matlab作图(极坐标和对数图像)

1.使用matlab画极坐标图像 r = a*θ,a = 2 ,0 ≤ θ ≤ 2pi a = 2; theta = [0:pi/90:2*pi]; r = a*theta; polar(theta, r); %很多plot函数可以使用的选项polar函数也可以用,如polar(theta, r), title('阿基米德螺线') 2.绘制极坐标图像 r = 1+ 2cos(θ) , 0 ≤ θ ≤ 6pi theta = [0:pi/90:6*pi]; r = 1+2*cos(theta);

【Python数据挖掘课程】 三.Kmeans聚类代码实现、作业及优化

这篇文章直接给出上次关于Kmeans聚类的篮球远动员数据分析案例,同时介绍这次作业同学们完成的图例,最后介绍Matplotlib包绘图的优化知识.        前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍        希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解.如果文章中存在不足或错误的地方,还请海涵

MATLAB 中文论坛相关帖子整理

说明: 本资料所有问题及代码均摘选自matlab中文论坛(www.ilovematlab.cn),主要供自己学习使用. 非常感谢论坛的所有提出以及解答问题的会员. 目   录 1.GUI新手之--教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中h0bject和handles 的区别... 16 4.handles结构中句柄和对象的关联问题... 17 5.Matlab利用定时器连续显示图片的问题... 19 5-1.G

java调用matlab绘图

环境: 系统:kali linux 2017 java: 1.8 matlab:R2016b idea:2016 1.编写matlab脚本: drawplot.m %画图 自定义函数drawplot 参数 x y function drawplot(x, y) plot(x, y); %%使用matlab函数plot()作图 grid on %网格显示 xlabel('X轴值') ylabel('Y轴值') title('Java调用MatLab作图例子') 脚本保存到指定文件夹 在matlab

A tutorial on Principal Components Analysis | 主成分分析(PCA)教程

A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components Analysis, February 26, 2002. 翻译:houchaoqun.时间:2017/01/18.出处:http://blog.csdn.net/houchaoqun_xmu  |  http://blog.csdn.net/Houchaoqun_XMU/article/details