我正在考虑从Matlab转换到Python(NumPy)。因此,作为一项学习任务,我尝试在Python上重写一个简单的随机模型。python脚本返回正确的答案,但运行太慢了!Python需要3分钟而不是像Matlab那样需要3秒。我做错什么了?在
Matlab软件:
clear all; clc;
tic
T = 0.05;
Tmax = 3600;
t = T:T:Tmax;
N = length(t);
G = [0 0;
0 T];
F = [1 T;
0 1];
Dksi = 13*1;
Deta = 10*1;
Band = 0.1:0.1:3;
RMS_Omega = nan(1, length(Band));
for i = 1:length(Band)
K = nan(2, 1);
K(1) = 8/3 * Band(i) * T;
K(2) = 32/9 * Band(i)^2 * T;
ksi = sqrt(Dksi) * randn(1, N);
eta = sqrt(Deta) * randn(1, N);
Xest = [0; 0];
Xextr = F*Xest;
Xist = [0; 0];
ErrOmega = nan(1, N); Omega = nan(1, N);
for k = 1:N
Xist = F*Xist + G*[0; ksi(k)];
omega_meas = Xist(1) + eta(k);
Xest = Xextr + K*(omega_meas - Xextr(1));
Xextr = F*Xest;
ErrOmega(k) = Xest(1) - Xist(1);
Omega(k) = Xist(1);
end
RMS_Omega(i) = sqrt(mean(ErrOmega.^2));
end
figure(1)
hold on
plot(Band, RMS_Omega);
hold off
xlabel('Bandwidth, Hz'); ylabel('RMS \omega, Hz');
toc
Python:
^{pr2}$
在处理过类似的问题之后,我学会了避免翻译代码。尽管它可以节省写作时间,但在运行中却没有(衡量写作的使用/时间)。在
Python中的
for
循环通常比Matlab慢,但是它提供了很多工具和库,可以帮助您构建一个好的代码,所以请充分利用它们。问题中的评论已经是一个很好的帮助!在相关问题 更多 >
编程相关推荐