1-3 MATLAB符号变量的使用、符号变量转为匿名函数、向量值匿名函数、符号变量转为向量值函数、结构体批量提取数据

1-3 MATLAB符号变量的使用、符号变量转为匿名函数、向量值匿名函数、符号变量转为向量值函数、结构体批量提取数据

1. 符号变量的使用

\qquad 顾名思义,符号变量在matlab中的作用可类比与数学中的“未知量”.
例1:

sym x,y
a=3*x+y;
b=6*x;

>>a+b
9*x+y

即定义了符号变量之后,我们得到的式子便可使用“多项式四则运算”进行操作。当然,需要注意一点,得到的结果 a + b = 9 x + y a+b=9x+y a+b=9x+y任然是符号变量,只能进行代数运算,不能赋值使用(即不能当成函数),在下面部分我们将表明如何将符号变量代数式转化为函数。

\qquad 下面介绍符号变量的矩阵运算.若想进行符号变量的矩阵运算,则运算对象必须是sym型元素。
例2:

sym a,b,c,d
A=[a,b;c,d];
B=[c;d];

>>A*B
[a*c+b*d;c^2+d^2]

\qquad 由上例可知,当需要运算的矩阵特别多时,我们若手动一个个建立符号变量则非常麻烦,下面介绍如何建立多个符号变量 ( x 1 , x 2 , . . . x n ) (x_1,x_2,...x_n) x1,x2,...xn
例3:

sym('x',[1,n])

>>x(1)
x1

>>x(2)
x2

x>>(1)+x(2)-x(3)
x1+x2-x3

2. 匿名函数

\qquad 匿名函数的定义为: 函数名=@(自变量)表达式
例4:

f=@(x)2*x^2

>>f(2)
4

除此之外还可以建立多变量(多元)函数
例5:

f=@(x,y)x^2+y^2

>>f(1,3)
10

例6:

f=@(x)x(1)+x(2)^2-3*x(3)

>>f([1,1,1])
-1

注: 例6的输入必须是向量, f f f可视为 R 3 → R \mathbb R^3\rightarrow \mathbb R R3R的映射.
向量值函数: 顾名思义,输出为向量 f f f可视为 R n → R m \mathbb R^n\rightarrow \mathbb R^m RnRm的映射
例7:

f=@(x)[x(1),3*x(2),5*x(3)^2]
>>f
[x1, 3*x2, 5*x3^2]

>>f([0,0,1])
[0,0,5]

3. 符号变量转匿名函数

由符号变量转为可赋值的匿名函数需要用到matlabFunction函数。具体操作如下例:
例8:转成多元函数

sym x,y
f=3*x+4*y
ff=matlabFunction(f);

>>f
@(x,y) 3*x+4*y

例9:转成输入为向量的函数

sym x,y
c=[x,y];
f=3*x+4*y
ff=matlabFunction(f,'Vars',{c});

>>f
@(inl) 3*inl(:,1)+4*inl(:,2)

>>f([1,2])
11

例10:转为向量值匿名函数,前提转换目标为向量值符号元素

a=sym('a',[1,n])
M=sym(zeros(n,1));
for i=1:n
M(i)=a(i);
end

>>M
>nX1 sym

fun=matlabFunction(M)
>>fun
@(a1,a2,...,an) [a1;a2;...;an]

若想转为向量值输入则

fun1=matlabFunction(M,'Vars',{a})

注意:最后输入的符号向量必须为M中的符号向量!!即M中的符号为 a 1 , a 2 , a 3 a1,a2,a3 a1,a2,a3 a a a必须为三个代表 a a a的符号变量。此处的 a a a即为第一行代码定义的 a a a

4.结构体批量提取数据

\qquad 假设创建了1X1的结构体,若想从中提取单个分量则结构体名.分量名即可。
例11:结构体创建及提取元素

a=struct(1,1);
a.first=a*b;
a.second=c*d;

>>a.first

例12:批量提取

d=struct2cell(a)

>>d
2X1 cell
>>d{1}
a*b
  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值