翻译: lmQ = fitlm(x_r,y_r,'quadratic') y_tlQ= feval(lmQ,x_t); error_tlQ= (1/56)*sum((y_t-y_tlQ).^2); figure plot(y_t) hold on plot(y_tlQ) hold off saveas(gcf,'真实值与预测值比较.png')
时间: 2023-12-04 22:05:37 浏览: 99
这段代码主要是进行二次多项式回归,并计算测试集上的均方误差。具体步骤如下:
1. 使用 `fitlm` 函数对训练集上的自变量 `x_r` 和因变量 `y_r` 进行二次多项式回归,得到模型 `lmQ`。
2. 使用 `feval` 函数对测试集的自变量 `x_t` 进行预测,得到预测值 `y_tlQ`。
3. 计算测试集上的均方误差 `error_tlQ`,公式为 (1/56)*sum((y_t-y_tlQ).^2),其中 `y_t` 为测试集上的真实值。
4. 绘制真实值和预测值的比较图,并保存为文件 "真实值与预测值比较.png"。
具体的绘图代码如下:
```
figure
plot(y_t)
hold on
plot(y_tlQ)
hold off
saveas(gcf,'真实值与预测值比较.png')
```
相关问题
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)这段代码有问题吗
这段代码有一些问题,例如:
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
```
pycharm显示Traceback (most recent call last): File "C:/Users/LMQ/Desktop/k210_code/k210_code.py", line 2, in <module> import sensor ModuleNotFoundError: No module named 'sensor'
这个错误是因为你的代码中使用了一个名为'sensor'的模块,但是PyCharm找不到该模块。这可能是因为你没有安装所需的模块或者PyCharm没有正确配置解释器。
首先,确保你已经安装了所需的模块。你可以使用pip命令安装,比如运行`pip install sensor`。如果你已经安装了该模块,可以尝试升级到最新版本,使用`pip install --upgrade sensor`命令。
如果模块已经安装或者升级了,那么可能是PyCharm的解释器配置有问题。你可以在PyCharm的设置中检查解释器配置。确保你选择了正确的Python解释器,并且所需的模块在该解释器的环境中可用。
如果问题仍然存在,你可以尝试重新创建一个新的PyCharm项目,并在新项目中重新设置解释器和安装所需的模块。有时候,重新创建项目可以解决一些配置问题。
希望这些提示能帮助你解决问题!如果还有其他疑问,请随时提问。
阅读全文