本帖最后由 麦克雷 于 2020-12-31 19:39 编辑
求助:想使用一个多年前的老程序,但是新版本的matlab不支持运行。matlab版本R2018a。
程序目的是仿真一个三阶电路,图片见附件。m文件程序如下:
syms t s
dI = sym('diff(I(t),t)');
dU = sym('diff(U(t),t)');
I = sym('I(t)'); U = sym('U(t)');
E = sin(t);
eq1 = 8/5 * dI - 1/2 * dU + 6 * I;
eq2 = 1/4 * dU - (E - U + 2 * I)/5;
L1 = laplace(eq1,t,s);
L2 = laplace(eq2,t,s);
syms LI LU
NI = subs( L1, {'I(0)', 'U(0)'}, {15, 8});
NU = subs( L2, {'I(0)', 'U(0)'}, {15, 8});
NI = subs(NI, {'laplace(I(t),t,s)','laplace(U(t),t,s)'},{LI, LU});
NU = subs(NU, {'laplace(I(t),t,s)','laplace(U(t),t,s)'},{LI, LU});
NI = collect(NI,LI);
NU = collect(NU,LU);
[LI,LU] = solve(NI,NU,LI,LU);
I = ilaplace(LI,s,t);
U = ilaplace(LU,s,t);
Subplot(2,2,1); ezplot(I, [0, 10]);
Title('current'); ylabel('I(t)'); grid
Subplot(2,2,1); ezplot(U, [0, 10]);
Title('voltage'); ylabel('I(t)'); grid
Subplot(2,2,1); ezplot(I, [5, 25]);
Title('current'); ylabel('I(t)'); grid
Subplot(2,2,1); ezplot(U, [5, 25]);
Title('current'); ylabel('I(t)'); grid
自己也做过多次尝试,比如sym换成str2sym、更换subs函数等,但都不能解决问题。第一次使用matlab,新人小白向大佬们求助,请问如何解决问题?
PS.sym改成str2sym、第11行~14行改为
NI = str2sym(strrep(L1,{'I(0)','U(0)'},{15,8}));
NU = str2sym(strrep(L2,{'I(0)','U(0)'},{15,8}));
NI = str2sym(strrep(NI,{'laplace(I(t),t,s)','laplace(U(t),t,s)'},{LI, LU}));
NU = str2sym(strrep(NU,{'laplace(I(t),t,s)','laplace(U(t),t,s)'},{LI, LU}));
后,报错信息如下:
警告: 输入必须为字符向量、字符向量元胞数组或字符串数组。
> In shiyan1 (line 11)
错误使用 strrep
图1.png
(11.21 KB, 下载次数: 1)
2020-12-31 19:28 上传
电路图
图2.png
(12.05 KB, 下载次数: 1)
2020-12-31 19:28 上传
方程