zoukankan      html  css  js  c++  java
  • 关于Matlab作图的若干问题

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

           image

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

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

    • 在图里显示点坐标

             alt

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

    • 采用字符串函数处理

            image

      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散点图');

          image

    五、图的说明

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

          image

      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/

  • 相关阅读:
    理解Linux 的CPU Load和CPU利用率
    Linux进程和信号超详细分析
    Linux 磁盘配额
    linux磁盘阵列raid详解
    Linux LVM管理
    Linux fstab文件详解
    Linux 磁盘管理
    sourceTree的使用
    Logstash 参考指南(Kafka输入插件)
    ELK的一次吞吐量优化
  • 原文地址:https://www.cnblogs.com/hxsyl/p/4067134.html
Copyright © 2011-2022 走看看