2023-07-06 Matlab中符号和句柄之间的转换.md
2023-07-06 Matlab中符号和句柄之间的转换
在Matlab中我们通常使用diff函数求导,其中如果f是符号函数,diff也返回符号函数,那么符号函数和句柄之间如何转换呢?下面给出一些例子:
- f1 = @(x) sin(x); %函数句柄
- syms x
- f2 = sin(x); %符号
- f3(x) = sin(x); %符号函数
- % 赋值计算方法
- a = 15;
- f1(a) %直接得到fx
- f2(a) %报错
- f2s = subs(f2,x,a) %替换符号,得到的还是符号
- eval(f2s) %使用eval计算
- f2d = diff(f2) %可以使用diff对符号求导,结果依旧是符号
- f3e = f3(1) %可以直接带值,但返回的是符号,等同于subs
- eval(f3e)
- f3d = diff(f3) %使用diff求导返回符号函数
- %% 将函数句柄转为符号和符号函数
- f1s = f1(x) %返回的符号
- f2sf(x) = f1(x) %返回符号函数
- %% 将符号转为函数句柄和符号函数
- f2h = matlabFunction(f2)
- f2h(a)
- f2sf(x) = f2;
- %% 将符号函数转为符号和函数句柄
- f3h = matlabFunction(f3)
- f3h(a)
最后符号函数转为符号没有找到解决办法。