为什么我的Python脚本与Matlab相比太慢了?

2024-10-01 05:01:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在考虑从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}$

Tags: bandsqrtnanlengthmatlabomegarmsxist
1条回答
网友
1楼 · 发布于 2024-10-01 05:01:39

在处理过类似的问题之后,我学会了避免翻译代码。尽管它可以节省写作时间,但在运行中却没有(衡量写作的使用/时间)。在

Python中的for循环通常比Matlab慢,但是它提供了很多工具和库,可以帮助您构建一个好的代码,所以请充分利用它们。问题中的评论已经是一个很好的帮助!在

相关问题 更多 >