将矩阵元素作为函数句柄传递

Passing matrix element as function handle

我对矩阵应用了拉普拉斯逆变换,现在它是 t 的函数。我的目标是替换 t 值并获得结果矩阵。我打算让这段代码非常直接,但我没有让它工作。这是我试过的:

clc,clear all, close all

% Parameters
syms s
r=3.33;
l = 4.56*10^-3;
j = 4.96*10^-5;
b = 4.59*10^-5;
k = 0.0332;

% State Matrices
F = [-r/l -k/l 0; k/j -b/j 0; 0 1 0]
G = [1/l; 0; 0]


sI = s*eye(3,3)
aux_A = (adjoint(sI-F))/det(sI-F)
laplaceA = ilaplace(aux_A)

result_matrix = @(t) laplaceA

%Assuming t = 0.01
result_matrix(0.01)
 

假设我的目标只是替换 laplaceA 矩阵中的 t 值,我愿意接受任何建议。谢谢!

替换符号函数中的 syms 变量

使用subs()替代匿名function/function句柄的Input参数可能是替代laplaceA中所有t项的方法。如下修改单行应该给出没有任何 t 变量的数值结果:

result_matrix = @(Input) subs(laplaceA,"t",Input);

计算三角函数的数值

result_matrix = @(Input) vpa(subs(laplaceA,"t",Input));

完整脚本:

clc
clear
close all

% Parameters
syms s
r = 3.33;
l = 4.56*10^-3;
j = 4.96*10^-5;
b = 4.59*10^-5;
k = 0.0332;

% State Matrices
F = [-r/l -k/l 0; k/j -b/j 0; 0 1 0];
G = [1/l; 0; 0];


sI = s*eye(3,3);
aux_A = (adjoint(sI-F))/det(sI-F);
laplaceA = ilaplace(aux_A);

result_matrix = @(Input) vpa(subs(laplaceA,"t",Input));

%Assuming t = 0.01
result_matrix(0.01)

输出结果: