将矩阵元素作为函数句柄传递
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)
输出结果:
我对矩阵应用了拉普拉斯逆变换,现在它是 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)