clear all
clc
global number_of_points R1 R2 L1 L2 I Idot;
%以上变量,意义同电路图里的那些变量。
M=[0.0181 6.7253 10.14954 -1.75 -0.47647;
0.0431 6.59092 10.09331 -0.625 -0.47672;
0.0681 6.45932 10.0366 0.275 -0.47723;
0.0931 6.33048 9.97939 0.725 -0.47773;
0.1181 6.20442 9.92169 0.875 -0.47823;
0.1431 6.08113 9.86351 0.725 -0.47873;
0.1681 5.96061 9.80483 0.5 -0.47924;
0.1931 5.84286 9.74566 0.575 -0.47974;
0.2181 5.72788 9.686 0.8 -0.48024;
0.2431 5.61567 9.62586 1.1 -0.48074;
0.2681 5.50624 9.56522 1.475 -0.48125;
0.2931 5.39957 9.50409 1.625 -0.48175;
0.3181 5.29568 9.44247 1.475 -0.48225;
0.3431 5.19456 9.38036 1.025 -0.48275;
0.3681 5.09621 9.31776 0.5 -0.48326;
0.3931 5.00063 9.25467 0.125 -0.48376;
0.4181 4.90782 9.19108 -0.25 -0.48426;
0.4431 4.81778 9.12701 -0.25 -0.48476;
0.4681 4.73052 9.06245 -0.1 -0.48527;
];
%以上是已知数据,第一列是时间,第二列是电阻R1曲线,第三列是电阻R2曲线,第四列是电流I波形,第五列是电流I的导数(求导之前已经滤波除去毛刺)。由于数据太多,这里截取了前面很少的一部分。
number_of_points=length(M(:,1)'); %数据点数
ts=1:number_of_points; %输出这些点上的函数值(原来只用过连续函数的,就能直接指定输出这些时刻的函数值。现在是离散的,就只能改成数据点了。但是自己确实不确定这样对不对。)
R1=M(ts,2)';
R2=M(ts,3)';
I=M(ts,4)'; %总电流,kA
Idot=M(ts,5)'; %总电流导数,kA/ns
L1=75; %nH
L2=60;
I1_0=[0.1]; %所求电流I1的初始值
[t,I1]=ode45('I_division',ts,I1_0); %调用ode45求解
t = linspace(M(1,1),M(number_of_points,1),number_of_points);%把数据点数变回时间
plot(t,I1,t,I-I1)