专栏首页电子狂人Matlab系列之那些数学函数(讨论功能已加入)

Matlab系列之那些数学函数(讨论功能已加入)

前言

本来是打算写关于矩阵的一些东西,但是弄了一半,发现需要的线代知识有点多,直接讲相关的使用,就太直白了,可能根本无法理解是什么意思,如果讲线代的知识,就感觉和该系列的文不太符,所以直接弃了那部分,打算之后讲到其他记录的时候,夹杂在其中进行,本篇就对MATLAB中常用的数学函数做一些记录。

三角函数

三角函数这个就真的是很常用很常用了,特别是做数字信号处理的时候,经常做混频用,当然其他的领域也常用到,不过对其他领域不太熟,所以就不举例子了

以下的表格是一些三角函数的函数名,及其说明,然后拿几个大家比较熟悉的出来演示:

函数名

说明

sin

正弦函数

sinh

双曲正弦函数

asin

反正弦函数,返回弧度

asinh

反双曲正弦函数

cos

余弦函数

cosh

双曲余弦函数

acos

反余弦函数,返回弧度

acosh

反双曲余弦函数

tan

正切函数

tanh

双曲正切函数

atan

反正切函数,返回弧度

atanh

反双曲正切函数

asech

反双曲正割函数

cot

余切函数

coth

双曲余切函数

acot

反余切函数,返回弧度

acoth

反双曲余切函数

asind

反正弦函数,返回角度

acosd

反余弦函数,返回角度

atand

反正切函数,返回角度

acotd

反余切函数,返回角度

简单使用:

%第一部分 
x=0:0.01:4*pi; 
y1=cos(x); 
y2=sin(x); 
figure(1); 
plot(x,y1,'r',x,y2,'g') 
%第二部分 
x=-5*pi:pi/27:5*pi; 
y1=sin(x); 
y2=cos(x); 
y3=tan(x); 
figure(2); 
plot(x,y1,'r',x,y2,'g',x,y3,'b');%r:红色 g:绿色 b:蓝色

运行的效果:

实例应用:

题:已知三角形的三条边,分别长2、3、4,求解长度2和4的两条边的夹角。

解题方案:直接通过计算夹角的余弦值,然后直接通过反余弦得到该角的值,当然也肯定还可以有其他的方法,有需要可以自行挖掘。

解题程序:

x=2;y=4;z=3; 
cos_alpha=(x^2+y^2-z^2)/(2*x*y) 
alpha_r=acos(cos_alpha)%弧度 
alpha_d=alpha_r*180/pi%弧度转角度 
alpha_d2=acosd(cos_alpha)%直接得角度

解题结果:

指数和对数函数

这两个函数的话,我也不知道咋说,现在印象里只记得弄功率谱的时候可以用下,其他的近来也没使用上,反正很重要就对了。

常用的指数和对数函数如下表,expm和logm就是用于矩阵的,和exp、log很好区别,加了个m(matrix):

函数名

说明

exp

指数函数

log

自然函数,即对数函数

log2

以2为底的对数,分割浮点数

log10

以10为底的对数

nextpow2

下一个以2为底的更高次幂

pow2

以2为底的幂和比例浮点数

expm

矩阵指数函数

logm

矩阵对数函数

简单使用:

%程序1
a=2; 
e=exp(a)
l=log(a)
l2=log2(a)
l10=log10(a)
np=nextpow2(a)
p=pow2(a)
s=sqrt(a)

结果太长,就直接复制数值过来比对了:

e = 
    7.3891 
l = 
    0.6931 
l2 = 
     1 
l10 = 
    0.3010 
np = 
     1 
p = 
     4 
s = 
    1.4142

例程2

%程序2
A=rand(3)
Ae=expm(A)
Al=logm(A)

结果如下:

复数处理函数

关于复数的处理函数,这个最近就比较深刻了,做工程的时候,用得蛮多的,在MATLAB里面除了一些变换以及直接赋值可以得到复数外,还可以直接用complex函数构造一个复数,对复数可以操作的函数,在下表中的展示:

函数名

说明

abs

绝对值、复数的模

angle

相位角

complex

构造复数

conj

复共轭

cplxpair

在复共轭对中加入有序数

imag

复数虚部

real

复数实部

isreal

判断数组是否为实数

unwrap

不展开相位角

简单使用:

%程序
a=complex(3,4)
a_r=real(a)
a_i=imag(a)
a_abs=abs(a)
a_ang=angle(a)
a_c=conj(a)

还是一样,直接复制数据结果:

a = 
   3.0000 + 4.0000i 
a_r = 
     3 
a_i = 
     4 
a_abs = 
     5 
a_ang = 
           0.9273 
a_c = 
   3.0000 - 4.0000i

离散函数

离散函数就如名字一样,是离散的效果,通过离散函数绘制离散的数据,可以得到冲击状和阶梯状的图,分别是stem和stairs,这两个就没必要列表了,直接看下使用的效果吧。

简单使用:

x=0:0.1:2; 
figure(1); 
stem(exp(-x.^2),'fill','r-.');%'fill' 'r-.' 填充红色,并以-.与横坐标对齐
figure(2); 
stem(exp(-x.^2),'fill','b-*');%'fill' 'b-*' 填充蓝色,并以-*与横坐标对齐
figure(3); 
stairs(exp(-x.^2));%绘制阶梯图

运行结果:

特殊数学函数

这部分的就是真的特殊了,如果没啥需要的话,可以直接结束本篇的阅读了,想看的话,就往下慢慢阅读。

通过特殊的函数可以实现坐标系的变换、绘制特殊函数曲线、特定积分运算以及误差处理等等,部分特殊数学函数如下表:

函数名

说明

airy

艾里函数

besselj

第一类贝塞尔(Bessel)函数

bessely

第二类贝塞尔(Bessel)函数

besselh

第三类贝塞尔(Bessel)函数

besseli

第一类变形的贝塞尔(Bessel)函数

besselk

第二类改进的贝塞尔(Bessel)函数

beta

Beta函数

betainc

不完全Beta函数

betaln

对数Beta函数

ellipj

雅可比矩阵(Jacobi)椭圆函数

ellipke

完全椭圆函数

cart2pol

直角坐标变极坐标

cart2sph

直角坐标变球坐标

erf

误差函数

erfinv

误差函数的逆函数

erfc

余误差函数

erfcinv

余误差函数的逆函数

erfcx

互补误差函数(erfcx(x)=exp(x^2)*erfc(x))

expint

指数积分函数

gamma

Gamma函数

gammainc

不完全Gamma函数

gammaln

对数Gamma函数

psi

Psi函数

legendre

Legendre函数

pol2cart

极主标变直角坐标

sph2cart

球坐标变直角坐标

直接来个看着让人懵逼的图,代码就不分析了,有点印象就好,用到了再去help吧~

%特殊函数简单例程
[X,Y]=meshgrid(-10:0.02:2,-3:0.02:3); 
BH=besselh(0,1,X+i*Y); 
contour(X,Y,abs(BH),0:0.2:10);hold on 
contour(X,Y,(180/pi)*angle(BH),-180:10:180);hold off 
format rat 
B=beta((0:10),3)
BC=betainc(0.5,(0:10),3)
PSI=psi(1,2)

结果:

坐标转换的也再来个吧:

%坐标转换
r=1; 
theta=linspace(0,pi); 
phi=linspace(0,2*pi); 
[tt,pp]=meshgrid(theta,phi); 
[x,y,z]=sph2cart(pp,pi/2-tt,r); 
subplot(121); 
mesh(x,y,z); 
axis square%设为方形
shading flat%不使用高级着色
subplot(122); 
mesh(tt,pp,z); 
shading flat%不使用高级着色
axis square%设为方形

运行结果:

本次的记录到此结束,关于图形的相关函数如果不懂的可以自己先help进行了解,后续也会针对图形的函数进行记录分享。

本文分享自微信公众号 - 电子狂人(DZKR666),作者:狂人V

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Matlab系列之函数嵌套

    昨天的那一篇讲的几个函数,不知道你们理解的如何,是否懂得怎么去使用了,如果还没懂,一定要再多看几遍,并且去在软件上进行实操,今天的话,将要介绍一下函数的嵌套,不...

    狂人V
  • Matlab系列之脚本与函数M文件与函数句柄

    从Matlab篇章的开始到现在,已经讲了一些操作的基础知识,其实和很多语言都有一定的相似之处,接下来几篇打算分享一下关于Matlab编程的一些基础。

    狂人V
  • Matlab系列之函数参数

    不知道你们是否有等待今天这篇的到来,这篇其中要讲到的函数参数,是个好东西,但是感觉初学的时候总会有点懵逼,希望你们能理解讲的东西,如果不理解,那就多看几遍吧,我...

    狂人V
  • 学会使用函数式编程的程序员(第1部分)

    在这篇由多部分组成的文章中,接下来将介绍函数式编程的一些概念,这些概念对你学习函数式编程有所帮助。如果你已经懂了什么是函数式编程,这可以加深你的理解。

    前端小智@大迁世界
  • Kotlin中let()with()run()apply()also()函数的使用方法与区别

    相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard...

    砸漏
  • 码如其人,小老弟,你能写一手漂亮的Python函数吗

    好的 Python 函数与蹩脚 Python 函数的区别是什么?「好」函数的定义之多让人惊讶。从我们的目的出发,我会把好的 Python 函数定义为符合以下清单...

    一墨编程学习
  • 如何学python 第10课 创建自己的函数

    在上一节课里,我们学习了一些关于错误检测和错误处理的知识。这节课我们来学习函数。我们将会介绍什么是函数,以及如何创建函数。 函数是什么? 函数是一系列指令的集合...

    用户1631416
  • [高大上的DL] Activation function (激活函数)的初步认识

    今天简单认识一下什么激活函数以及都有那些激活函数。说到激活函数这里有几个比较容易混淆的概念,比如Pooling池化和Sampling采样,loss functi...

    用户1622570
  • (1)James Stewart Calculus 5th Edition:Functions and Models

    dodo_lihao
  • 3分钟读懂C语言函数:这些例子一看就懂!|一键删除账户教学

    最近发现,有些小伙伴对C语言的函数有些难以理解,其实呢,C语言的函数很好理解,只不过部分人在学习的时候,没有找到好的例子来类比理解而已。这篇文章会教大家如何去理...

    诸葛青云

扫码关注云+社区

领取腾讯云代金券