function dydt=tongbufadianji(t,y) % 首先指定全局变量 %global a1 a2 a3 a4 Rf % 下面输入电机基本数据: r=2.9069E-03,Rfd=5.9013E-04,Rkd=1.1900E-02,Rkq=2.0081E-02;Ufd=24;w=314,Ll=3.0892E-04,Lmd=3.2164E-03,Lmq=9.7153E-04,Llfd=3.0712E-04,Llkd=4.9076E-04,Llkq=1.0365E-03, Laa0=1/3*(Lmd+Lmq)+Ll;Laa2=1/3*(Lmd-Lmq);Mab0=1/2Laa0;;Mab2=Laa2;Mafd0=2/3Lmd,Makd0=2/3Lmd,Makq0=Lmq,Lfd=Llfd+Lmd,Lkd=Llkd+Lmd,Lkq=Llkq+Lmq,Mfkd=Lmd; L=[ -(Laa0+Laa2cos(2wt)), -(-Mab0+Mab2cos(2(wt+2pi/3))), -(-Mab0+Mab2cos(2(wt-2pi/3))), Mafd0cos(wt), Makd0cos(wt), -Makq0sin(wt); -(-Mab0+Mab2cos(2(wt+2pi/3))), -(Laa0+Laa2cos(2(wt-2pi/3))), -(-Mab0+Mab2cos(2(wt))), Mafd0cos(wt-2pi/3), Makd0cos(wt-2pi/3), -Makq0sin(wt-2pi/3); -(-Mab0+Mab2cos(2(wt-2pi/3))), -(-Mab0+Mab2cos(2(wt))), -(Laa0+Laa2cos(2*(wt+2pi/3))), Mafd0cos(wt+2pi/3), Makd0cos(wt+2pi/3), -Makq0sin(wt+2pi/3); -Mafd0cos(wt), -Mafd0cos(wt-2pi/3), -Mafd0cos(wt+2pi/3), Lfd, Mfkd, 0; -Makd0cos(wt), -Makd0cos(wt-2pi/3), -Makd0cos(wt+2pi/3), Mfkd, Lkd, 0; Makq0sin(wt), Makq0sin(wt-2pi/3), Makq0sin(wt+2pi/3), 0, 0, Lkq] G=[ 2Laa2sin(2wt), 2Mab2sin(2(wt+2pi/3)), 2Mab2sin(2*(wt-2pi/3)), -Mafd0sin(wt), -Makd0sin(wt), -Makq0cos(wt); 2Mab2sin(2*(wt+2pi/3)), 2Laa2sin(2*(wt-2pi/3)), 2Mab2sin(2*(wt)), -Mafd0sin(wt-2pi/3), -Makd0sin(wt-2pi/3), -Makq0cos(wt-2pi/3); 2Mab2sin(2*(wt-2pi/3)), 2Mab2sin(2wt), 2Laa2sin(2*(wt+2pi/3)), -Mafd0sin(wt+2pi/3), -Makd0sin(wt+2pi/3), -Makq0cos(wt+2pi/3); Mafd0sin(wt), Mafd0sin(wt-2pi/3), Mafd0sin(wt+2pi/3), 0, 0, 0; Makd0sin(wt), Makd0sin(wt-2pi/3), Makd0sin(wt+2pi/3), 0, 0, 0; Makq0cos(wt), Makq0cos(wt-2pi/3), Makq0cos(wt+2pi/3), 0, 0, 0] % 下面进行曲线拟合: R=[-r, 0, 0, 0, 0, 0; 0, -r, 0, 0, 0, 0; 0, 0, -r, 0, 0, 0; 0, 0, 0, Rfd, 0, 0; 0, 0, 0, 0, Rkd, 0; 0, 0, 0, 0, 0, Rkq] Uabc=[100,0,0,Ufd,0,0]'; y(1)=0; dydt=L(Uabc-wGy-Ry)这段代码有问题吗
时间: 2024-03-14 13:43:43 浏览: 57
这段代码有一些问题,例如:
1. 在定义全局变量时,应该在代码开头使用关键字 global,例如 global a1 a2 a3 a4 Rf。
2. 在第 9 行代码中,2/3Lmd、2/3Lmd、Lmq、Llfd、Llkd 和 Llkq 的表达式中应该使用乘号 *,例如 2/3*Lmd。
3. 在第 14 行代码中,Mab0 的表达式中应该加上乘号 *,例如 Mab0=1/2*Laa0;。
4. 在第 16 行代码中,L=[...] 后面的矩阵表达式中应该使用乘号 *。
5. 在第 34 行代码中,dydt=L(Uabc-w*G*y-R*y) 应该在等号左边定义输出变量 dydt。
6. 在第 34 行代码中,Uabc、G 和 R 的定义应该放在函数定义之外,或者使用函数嵌套定义。
需要修改的代码如下:
```matlab
function dydt=tongbufadianji(t,y)
global a1 a2 a3 a4 Rf
% 输入电机基本数据:
r=2.9069E-03;
Rfd=5.9013E-04;
Rkd=1.1900E-02;
Rkq=2.0081E-02;
Ufd=24;
w=314;
Ll=3.0892E-04;
Lmd=3.2164E-03;
Lmq=9.7153E-04;
Llfd=3.0712E-04;
Llkd=4.9076E-04;
Llkq=1.0365E-03;
Laa0=1/3*(Lmd+Lmq)+Ll;
Laa2=1/3*(Lmd-Lmq);
Mab0=1/2*Laa0;
Mab2=Laa2;
Mafd0=2/3*Lmd;
Makd0=2/3*Lmd;
Makq0=Lmq;
Lfd=Llfd+Lmd;
Lkd=Llkd+Lmd;
Lkq=Llkq+Lmq;
Mfkd=Lmd;
% 定义矩阵
L=[-(Laa0+Laa2*cos(2*w*t)), -(-Mab0+Mab2*cos(2*(w*t+2*pi/3))), -(-Mab0+Mab2*cos(2*(w*t-2*pi/3))), Mafd0*cos(w*t), Makd0*cos(w*t), -Makq0*sin(w*t);
-(-Mab0+Mab2*cos(2*(w*t+2*pi/3))), -(Laa0+Laa2*cos(2*(w*t-2*pi/3))), -(-Mab0+Mab2*cos(2*w*t)), Mafd0*cos(w*t-2*pi/3), Makd0*cos(w*t-2*pi/3), -Makq0*sin(w*t-2*pi/3);
-(-Mab0+Mab2*cos(2*(w*t-2*pi/3))), -(-Mab0+Mab2*cos(2*w*t)), -(Laa0+Laa2*cos(2*(w*t+2*pi/3))), Mafd0*cos(w*t+2*pi/3), Makd0*cos(w*t+2*pi/3), -Makq0*sin(w*t+2*pi/3);
-Mafd0*cos(w*t), -Mafd0*cos(w*t-2*pi/3), -Mafd0*cos(w*t+2*pi/3), Lfd, Mfkd, 0;
-Makd0*cos(w*t), -Makd0*cos(w*t-2*pi/3), -Makd0*cos(w*t+2*pi/3), Mfkd, Lkd, 0;
Makq0*sin(w*t), Makq0*sin(w*t-2*pi/3), Makq0*sin(w*t+2*pi/3), 0, 0, Lkq];
G=[2*Laa2*sin(2*w*t), 2*Mab2*sin(2*(w*t+2*pi/3)), 2*Mab2*sin(2*(w*t-2*pi/3)), -Mafd0*sin(w*t), -Makd0*sin(w*t), -Makq0*cos(w*t);
2*Mab2*sin(2*(w*t+2*pi/3)), 2*Laa2*sin(2*(w*t-2*pi/3)), 2*Mab2*sin(2*w*t), -Mafd0*sin(w*t-2*pi/3), -Makd0*sin(w*t-2*pi/3), -Makq0*cos(w*t-2*pi/3);
2*Mab2*sin(2*(w*t-2*pi/3)), 2*Mab2*sin(2*w*t), 2*Laa2*sin(2*(w*t+2*pi/3)), -Mafd0*sin(w*t+2*pi/3), -Makd0*sin(w*t+2*pi/3), -Makq0*cos(w*t+2*pi/3);
Mafd0*sin(w*t), Mafd0*sin(w*t-2*pi/3), Mafd0*sin(w*t+2*pi/3), 0, 0, 0;
Makd0*sin(w*t), Makd0*sin(w*t-2*pi/3), Makd0*sin(w*t+2*pi/3), 0, 0, 0;
Makq0*cos(w*t), Makq0*cos(w*t-2*pi/3), Makq0*cos(w*t+2*pi/3), 0, 0, 0];
R=[-r, 0, 0, 0, 0, 0;
0, -r, 0, 0, 0, 0;
0, 0, -r, 0, 0, 0;
0, 0, 0, Rfd, 0, 0;
0, 0, 0, 0, Rkd, 0;
0, 0, 0, 0, 0, Rkq];
Uabc=[100,0,0,Ufd,0,0]';
y(1)=0;
dydt=L*(Uabc-w*G*y-R*y);
end
```
阅读全文