MATLAB | 那些你不得不知道的MATLAB小技巧(一)
1:预设符号变量类型
假设我们编写了如下代码:
syms x
f=x^3+x^2+9*x+9;
solve(f==0)
此时求解结果为:
ans =
-1
-3i
3i
但如果在求解前预设x为实数:
syms x
assume(x,'real')
f=x^3+x^2+9*x+9;
solve(f==0)
求解结果为:
ans =
-1
还有超多其他预设等你来研究:
Assume ‘x’ is | Syntax |
---|---|
real | assume(x,‘real’) |
rational | assume(x,‘rational’) |
positive | assume(x,‘positive’) |
positive integer | assume(x,{‘positive’,‘integer’}) |
less than -1 or greater than 1 | assume(x<-1) |
an integer from 2 through 10 | assume(in(x,‘integer’) & x>2 & x<10) |
not an integer | assume(~in(z,‘integer’)) |
not equal to 0 | assume(x ~= 0) |
even | assume(x/2,‘integer’) |
odd | assume((x-1)/2,‘integer’) |
from 0 through 2π | assume(x>0 & x<2*pi) |
a multiple of π | assume(x/pi,‘integer’) |
2:if 转 switch (逻辑值作为输入变量)
假如你编写了如下代码:
score=68
if 90<=score&&score<=100disp('优秀');
elseif 70<=score&&score<90disp('良好');
elseif 60<=score&&score<70disp('一般');
elseif score<60disp('不及格');
end
有个办法能够避免大量 if else
:
就是拿逻辑值作为输入使用 switch
:
score=68
switch truecase 90<=score&&score<=100disp('优秀');case 70<=score&&score<90disp('良好');case 60<=score&&score<70disp('一般');case score<60disp('不及格');
end
3:matlab 拟合曲线后转换成匿名函数
x=[2 2.5 3 3.5 4 4.5 5 5.5 6];
y=[41 38 34 32 29 28 25 22 20];
p=polyfit(x,y,3);
f=matlabFunction(poly2sym(p))xx=2:.1:6;
plot(xx,f(xx),'LineWidth',2)
grid on
f =
包含以下值的 function_handle:
@(x)x.(-8.57e+2./5.4e+1)+x.2.*(2.56e+2./9.9e+1)-x.3.(5.8e+1./2.97e+2)+7.05e+2./1.1e+1
4:更快的查看每个模块包含的函数
如果没看过小刘老师这篇,我可能永远也不会点开这个小三角,这个三角也太细节了叭hiahiahia图片,点开后会出现一个像电子词典样子的help文档合集:
5:sub2ind及ind2sub
假设我们要把全零矩阵第(2,3)个元素及第(3,2)个元素变为1,如果编写了如下代码:
A=zeros(4,4);
A([2,3],[3,2])=1
A =
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
我们会发现不只改变了两个元素,但我们可以通过sub2ind
函数将双变量索引改为单变量索引,例如([4,4]为矩阵尺寸):
A=zeros(4,4);
A(sub2ind([4,4],[2,3],[3,2]))=1
A =
0 0 0 0
0 0 1 0
0 1 0 0
0 0 0 0
ind2sub
函数可以用来减少循环嵌套次数,举个简单的例子,假如编写了如下代码:
for i1=1:5for i2=1:3for i3=1:2disp([i1,i2,i3])endend
end
可以改写为如下代码(用处不多且需要注意顺序,远没上一条重要):
sz=[5,3,2];
for i=1:prod(sz)[i3,i2,i1]=ind2sub(sz(end:-1:1),i);disp([i1,i2,i3])
end
6:刷亮数据
不会有人还没点过这个小刷子叭:
点击后可以将部分数据刷亮,之后右键点击被刷亮的数据,可以把数据导出,换颜色,或者直接把数据删掉,交互式绘图大杀器有没有:
7:大小为0的矩阵
就比如我要创建一个[x1,y1;x2,y2;x3,y3;… …]这样的矩阵,每一轮往最后加入新点,但每次加入点的个数未知,要添加次数也未知,我们就不如创建一个0xn大小的矩阵不断的往后面增添新的元素:
% 创建0行2列矩阵
P=zeros(0,2);
% 循环随机5-10之间的随机轮
for i=1:randi([5,10],[1,1]) % 每次随机增加2-5行随机数P=[P;rand(randi([2,5],[1,1]),2)]
end
8:任意进制相互转换
就是先转成十进制,再转换为其他进制:
% 12进制转16进制
bs1=12;
bs2=16;
% 原字符
baseStr='1B';% 转换
decStr=base2dec(baseStr,bs1);
result=dec2base(decStr,bs2)
% result='17'
因此有更简单的RGB颜色、16进制码相互转换函数:
RGB值转16进制码函数:
function HEX=RGB2HEX(RGB)hexVec=dec2base(RGB,16)';HEX=['#',hexVec(:)'];
end
调用:
hex=RGB2HEX([251,255,250])
% hex = '#FBFFFA'
16进制码转RGB值函数:
function RGB=HEX2RGB(HEX)hexVec=reshape(HEX(2:end),2,[])';RGB=base2dec(hexVec,16)';
end
调用:
rgb=HEX2RGB('#FBFFFA')
% rgb = [251,255,250]
9:虚平面绘图
MATLAB 支持虚平面绘图,就是实部对应X轴坐标,虚部对应Y轴坐标,使用虚平面绘图可以只使用一个数组便绘制隐函数,举个例子,使用虚平面绘图绘制圆形:
t=0:pi/100:2*pi;
plot(exp(t.*1i))
10:MATLAB高精度计算
一般MATLAB中如果两个数的数值相差小于eps,则认为数值相同,例如以下两个判断MATLAB都会认为是对的:
1==1+eps/2
1==1+1e-20
ans =
logical
1
ans =
logical
1
eps的数值为2.2204e-16,只要我们将精度设置的更高就不会出现上述问题,例如:
digits(50)
logical(vpa(1)==vpa(1)+vpa(1e-20))
ans =
logical
0
再比如,我想显示圆周率的前100位小数:
digits(100)
pi100=vpa(pi)
pi100=3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
MATLAB | 那些你不得不知道的MATLAB小技巧(一)相关推荐
- 一些你可能不知道的 Python 小技巧!
[CSDN 编者按]Python 风头正盛,未来一段时间内想必也会是热门编程语言之一.因此,熟练掌握 Python 对开发者来说极其重要,说不定能给作为开发者的你带来意想不到的财富. 作者 | Seb ...
- cad黑色背景变成白色_盘点CAD中你可能不知道的实用小技巧
相信对很多设计师朋友和刚学设计的小白来说CAD制图都是设计中用的较多的一个制图软件了,可是你知道吗在众多命令中其实有很多小技巧可以给我们节省不少时间呢,下面我就说说有那些实用小技巧吧! 1.文字镜像如 ...
- 12个你可能不知道的CSS小技巧
本文整理出12个开发中你有可能没有用到过的CSS小技巧,一起来看看吧~ 1. 自定义光标(cursor) 首先来看一下CSS的内置光标样式.平时开发中用到的基本上就是default.pointer.n ...
- MATLAB | 那些你不得不知道的MATLAB小技巧(三)
1: 比较常用绘图函数介绍 1.1: 填充图 半透明填充图:设置faceAlpha属性为0-1的数值即可调整透明度: % 生成三组x,y数据 x=linspace(-8,12,100); y1=nor ...
- MATLAB | 那些你不得不知道的MATLAB小技巧(二)
1: 实时脚本控件 实时脚本应该大部分人都会用了,但是实时脚本控件应该用的人还不多,怎么说呢,应该算一个更方便调整参数的模块叭.点击图示按钮即可插入各种类型的控件: 插入之后双击控件即可设置其属性: ...
- MATLAB | 那些你不得不知道的MATLAB小技巧(四)
嗨嗨嗨第四期来啦: 1: 将小数转化为分数并提取分子和分母 a=2065/2013 ; b=split(rats(a),'/') c=str2num(b{1}) d=str2num(b{2}) b = ...
- python 代码换行_你一定不知道的Python小技巧,提升你Python代码的可读性
Python的初学者,开发者都应该知道的代码可读性提高技巧,本篇主要介绍了如下内容: PEP 8是什么以及它存在的原因 为什么你应该编写符合PEP 8标准的代码 如何编写符合PEP 8的代码 为什么我 ...
- 你可能不知道的 CSS 阴影技巧与细节
关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧[1],介绍了一些关于 box-shadow 的用法. 最近一个新的项目,CSS- ...
- 那些你所不知道的arXiv使用技巧
作者:Tom Hardy Date:2020-12-23 来源:那些你所不知道的arXiv使用技巧
最新文章
- 解决苹果APP审核需要的IPv6地址的问题
- python中字典和集合的区别_Python中字典和集合学习小结
- Mono 2.4 and MonoDevelop 2.0 have been released
- 京东公布618第一小时战报:成交金额同比增长65%
- 安装Windows10 64位提示“只能安装到GPT分区”,怎么办?
- 基于 Eclipse 平台的代码生成技术
- 基于React的AmazeUI-touch使用(如何使用react)
- 图像下采样 matlab_MATLAB--数字图像处理 图像的采样与量化
- Oracle中登录OEM口令忘记,oracle oem创建过程 一直提示sys密码错误
- mysql双机数据热备份_教你怎么样实现MySQL数据库双机热备份
- 安装并使用达梦数据库
- Windows 7 旗舰版 64位 (纯净版)
- 敏捷项目如何保证测试质量
- 华为云麒麟arm架构docker启动redis报错:<jemalloc>: Unsupported system page size
- python 图灵完备_什么是图灵完备?
- IOS 一些小知识点整理
- 笔记本上搭建yum源
- 黑苹果uhd630黑屏_微星 MSI GF63 i5-8300H+8G+128G+UHD630 基本完美黑苹果,把EFI分享给各位...
- 合肥市电力大数据研究中心成立
- 北航研究生课程嵌入式系统设计与应用(17系)知识点总结