首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MATLAB入门篇 基本运算2

1

符号计算

1》符号变量定义

s = sym('name');

%s:返回的符号变量或表达式

%name:输入的名称或表达式

%变量不多时,

%建议把s和name写成一样,

%以免混淆

s = sym(var,flag);

%var:数值变量名(数或矩阵)

%flag:指定var的具体类型

% 'r'-默认值,有理数

% 'f'-浮点型数据

% 'd'-十进制数

% 'e'-估计误差

%该式还可把数值转化为符号变量

r = vpa(A);

r = vpa(A,D);

%A:double型变量

%D:转换后小数总位数

%r:符号型数据

%还可用digits(N)设定D的值

%N为小数时,四舍五入取整

x = sym('x',type)

%type:指定x类型

% 'positive'-正数

% 'real'-实数

% 'unreal'-非实数

%还可将字符串型变量化为符号变量

%注意:syms与sym不同

syms arg1 arg2 …;

syms k type;

%arg1,arg2:定义的符号变量名

%也可用type:positive,real,unreal

%注意:直接输入,而不加引号

F1 = findsym(S);

F2 = findsym(S,n);

%S是一个符号表达式

%F1:包含S的所有符号变量的字符串

%包含符号变量名、逗号和空格

%符号变量名是英文字母,大写在前

%没有则返回空字符串

%F2:S中最靠近x右侧的n的字符串

horner(P);

%将表达式P化为ax(bx(cx+d)+e)+g

[n,d] = numden(A);

%将表达式A化为有理分式

%n(num)分子,d(den)分母

2》赋值函数使用

v = subs(s,old,new);

v = subs(s,,);

%s:表达式;无引号

%old:要代换的变量名,单变量缺省

%new:更换后的值

%var1,var1:多个符号变量名

%v1,v2,…:相应的值

3》符号微积分

df = diff(f,n);%微分

%f:符号表达式;n:求导次数,默认为1

Jf = jacobian(f,v);%雅克比矩阵

%f:符号表达式;

%v:不同变量组成的向量

%v中只有1个变量时,

%diff( )等价于jacobian( )

%积分

V = int(S);

V = int(S,var);

V = int(S,a,b);

V = int(S,var,a,b);

%S:被积函数,向量和矩阵也可

%无引号

%var:积分变量,默认为x

%a,b:上下限

%求解微分方程

F = disolve(f);

%f:'被积表达式',有引号

%F:原函数

%极限

v = limit(f);

v = limit(f,a);

v = limit(f,x,a);

v = limit(f,x,a,'right');

v = limit(f,x,a,left');

%f无引号,也可是向量或矩阵形式

2

多项式处理

1》多项式定义

p = [an,an-1,…,a1,a0];

%从高次到低次

%Pn(x)=anx^n+……+a1x+a0

%特殊函数调用

y = mfun('fun',p1,p2,…,pk);

%etc

2》多项式运算

r = roots(p);

%计算零点

y = polyval(p,x);

%特殊点函数值计算

dp = polyder(p);%求导

dp = polyder(p1,p2);%乘积的导数

[dq,dr] = polyder(p1,p2);%相除的导数

%p:原多项式的系数向量

%dp:导数多项式的系数向量

%dq:分子多项式的系数向量

%dr:分母多项式的系数向量

[r,p,k] = residue(B,A);

[B,A] =residue(r,p,k);

%B(x)/A(x) =

% r1/(x-p1)+…+rn/(x-pn)+k(x)

3

卷积与相关

c = conv(p1,p2);

%卷积

%length(c)=length(p1)+length(p2)-1

[q,r] = deconv(p1,p2);

%解卷积

%q:多项式q(x)的系数向量

%r:余项r(x)的系数

%p1(x)/p2(x)=q(x)+r(x)/p2(x)

C = conv2(A,B);

C = conv2(A,B,shape);

%二维卷积

%shape:字符串,限制输出矩阵C大小

% 'full'-默认值,m1+m2-1,n1+n2-1

% 'same'-与A大小相同的中间部分

% 'valid'-A的行列不小于B,则为

% m1-m2+1,n1-n2+1,

% 否则为[]。

R = corr(A,B);

%R:线相关系数矩阵

4

表达式转换

1》符号表达式->字符串

F = disolve(f);

Fs = char(f);

2》字符串->符号表达式

x = sym('x',type)

%type:指定x类型

% 'positive'-正数

% 'real'-实数

% 'unreal'-非实数

3》含变化参数的符号计算

a=2;%不断变换a,v式统一

v=int(sym(['x^',num2str(a),'+3']),1,2);

输出:

v = 16/3

4》函数赋值

syms x;

f = x^2+x+2;

x = 1;

fv = eval(f);

输出:

fv = 4

5》符号表达式->inline函数

syms x y;

f = x^2+y*3;

fun = inline(char(f));

输出:

fun = Inline function:

fun(x,y)=x^2+3*y

清风徐来鬼见愁

ID:QingFengXuLaiGJC

关注

清风徐来 | 鬼见愁乔佳 | 喜欢文字的你

日常更新一些关于技术后沿和小众文化的骚操作

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806G1WKJH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券