许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB小技巧(二):那些你不得不知道的高效操作

MATLAB小技巧(二):那些你不得不知道的高效操作

阅读数 19
点赞 0
article_banner

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=[];

变色玫瑰花

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)

旋转多边形

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


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%



3: MATLAB自带颜色(lines)

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

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

lines(1)

lines(2)
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



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)
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);
% 给1、3图像做图例
legend([p1,p3],{'sin(x)','sin^2(x)'})



8: 生成latex及mathml公式

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

latex公式生成

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

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

13e𝑥𝑥𝑥2      1 3    x       e  x   x2    \right) S=(31​ex​xx2​)


chr = latex(S)

运行结果:

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

MathML公式生成

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

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

运行结果:

chr =

    '<math xmlns='http://www.w3.org/1998/Math/MathML' display='block'>
       <msup>
         <mo>ⅇ</mo>
         <mrow>
           <mo>-</mo>
           <msup>
             <mi>x</mi>
             <mn>2</mn>
           </msup>
         </mrow>
       </msup>
     </math>
     '

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空