• MATLAB | 那些你不得不知道的MATLAB小技巧(二)


    1: 实时脚本控件

    实时脚本应该大部分人都会用了,但是实时脚本控件应该用的人还不多,怎么说呢,应该算一个更方便调整参数的模块叭。点击图示按钮即可插入各种类型的控件:

    插入之后双击控件即可设置其属性:

    举几个简单的例子(因为推送显示不了控件,因此给出的代码为无控件版本,请自行添加控件,或者下载网盘压缩包:
    【链接】:https://pan.baidu.com/s/15JxprFG8B10DsocdwzqqLQ?pwd=slan
    【提取码】:slan

    蝴蝶线

    a=3.5;
    clc;cla;clf
    x=linspace(0,2*pi,500);
    hdl=polarplot(x,sin(x)+sin(a.*x).^3,'LineWidth',1.5);
    ax=gca;ax.RTick=[];
    
    • 1
    • 2
    • 3
    • 4
    • 5

    变色玫瑰花

    clc;cla;clf
    CMAP="parula";
    [x,t]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
    p=(pi/2)*exp(-t./(8*pi));
    change=sin(15*t)/150;
    u=1-(1-mod(3.6*t,2*pi)./pi).^4./2+change;
    y=2*(x.^2-x).^2.*sin(p);
    r=u.*(x.*sin(p)+y.*cos(p));
    h=u.*(x.*cos(p)-y.*sin(p));
    surface(r.*cos(t),r.*sin(t),h,'EdgeAlpha',0.1,...
        'EdgeColor',[0 0 0],'FaceColor','interp')
    colormap(CMAP)
    grid on
    view(45,45)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    旋转多边形

    lenRatio=0.19;
    numEdge=7;
    numPolygon=14;
    
    clc;cla;clf
    theta=linspace(0,2*pi,numEdge+1);
    X=cos(theta);X(end)=[];
    Y=sin(theta);Y(end)=[];
    
    fill(X,Y,[0,0,0],'FaceColor','none');
    hold on;
    axis equal
    axis([-1,1,-1,1])
    
    for i=1:numPolygon
        tX=[X(2:end),X(1)];
        tY=[Y(2:end),Y(1)];
        X=(tX-X).*lenRatio+X;
        Y=(tY-Y).*lenRatio+Y;
        fill(X,Y,[0,0,0],'FaceColor','none');
    end
    hold off
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2: 半透明折线图

    官网上折线图函数plot介绍告诉了我们咋改粗细,咋调整标记样式,咋调整颜色,但是就是没告诉我们咋设置透明度,但其实plot的color属性看起来是rgb值,其实可以是rgba值,我们把原本rgb三元组改成四元组即可设置透明度,例如:

    x=0:.1:4*pi;
    hold on
    plot(x,sin(x),'LineWidth',2,'Color',[1,0,0,0.5]) % 红色,透明50%
    plot(x,cos(x),'LineWidth',2,'Color',[0,0,1,0.5]) % 蓝色,透明50%
    
    • 1
    • 2
    • 3
    • 4


    3: MATLAB自带颜色(lines)

    系统自带离散颜色,在官网各种数值:

    但其实有个自带函数lines可以获取这些基本颜色:例如:

    lines(1)
    
    lines(2)
    
    • 1
    • 2
    • 3

    ans =
    0.0000 0.4470 0.7410

    ans =
    0.0000 0.4470 0.7410
    0.8500 0.3250 0.0980

    再举个例子:

    % 生成18个颜色
    cList=lines(18);
    
    x=0:.1:4*pi;
    hold on
    % 循环绘图
    for i=1:18
        plot(x,sin(x+i*.1).*0.9^i,'Color',cList(i,:),'LineWidth',1.5)
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9


    4: 批量注释

    最简单的多行注释就是选中多行后点击图示按钮,旁边的按钮即为取消多行注释:

    当然我们点卡:预设->快捷方式->搜索注释,也能发现可以用Ctrl+R多行注释,用Ctrl+T取消注释:

    当然%{%}也是多行注释的好方法:


    5: 少量代码出现中文乱码

    出现中文乱码的可能原因多如牛毛,整理出一篇应对全部情况的文章也挺麻烦,这里给出一个通用的解决方法,就是将出现乱码的m文件后缀由.m改为.txt之后全部内容复制到新的m文件即可。


    6: 实数根

    matlab使用^或者power来求负数的奇数次根时,默认为虚根,相求实根可以使用nthroot函数:

    r1=(-3)^(1/3)
    r2=power(-3,1/3)
    
    r3=nthroot(-3,3)
    
    • 1
    • 2
    • 3
    • 4

    r1 =0.7211 + 1.2490i
    r2 =0.7211 + 1.2490i
    r3=-1.4422


    7: 仅显示部分图例

    给各个图形对象命名并当作legend函数第一个参数即可,举个例子:

    x=0:.2:4*pi;
    % 随便画点图
    hold on;grid on
    p1=plot(x,sin(x),'-.','LineWidth',2);
    p2=plot(x,sin(0.5.*x),'--','LineWidth',2);
    p3=plot(x,sin(x).^2,':','LineWidth',2);
    %13图像做图例
    legend([p1,p3],{'sin(x)','sin^2(x)'})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8


    8: 生成latex及mathml公式

    这里直接放上官网的例子叭:

    latex公式生成

    syms x
    S = [sym(1)/3 x; exp(x) x^2]
    
    • 1
    • 2

    S = ( 1 3 x e x x 2 ) S=\left(13xexx2

    \right) S=(31exxx2)

    chr = latex(S)
    
    • 1

    运行结果:

    chr = 
    '\left(\begin{array}{cc} \frac{1}{3} & x\\ {\mathrm{e}}^x & x^2 \end{array}\right)'
    
    • 1
    • 2

    MathML公式生成

    可以试一下直接将MathML公式复制到非WPS的word文档,会直接生成公式,不过MATLAB对于简单的公式,其生成的MathML可以直接在word生成公式,复杂的就别指望了。。。

    syms x
    f = 1/exp(x^2);
    chr=mathml(f)
    
    • 1
    • 2
    • 3

    运行结果:

    chr =
    
        '<math xmlns='http://www.w3.org/1998/Math/MathML' display='block'>
           <msup>
             <mo>&ee;</mo>
             <mrow>
               <mo>-</mo>
               <msup>
                 <mi>x</mi>
                 <mn>2</mn>
               </msup>
             </mrow>
           </msup>
         </math>
         '
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Linux部署FTP服务
    Docker 使用全过程的教程来了,快快来一起掌握住它
    桌面运维命令
    78. 子集、90. 子集 II、491. 递增子序列
    Python基础内容训练5(常用的数据类型-----字典)
    LeetCode简单题之出现最频繁的偶数元素
    计算机网络——应用层の选择题整理
    文件管理:文件的逻辑结构
    【LeetCode】41、 缺失的第一个正数
    可视化并理解CNN
  • 原文地址:https://blog.csdn.net/slandarer/article/details/125983994