Matlab 减少傅里叶系数计算的迭代运行时间?

Matlab 减少傅里叶系数计算的迭代运行时间?,matlab,iteration,signals,signal-processing,Matlab,Iteration,Signals,Signal Processing,下面提供了计算傅里叶系数和生成原始信号的代码。问题是程序运行正常,没有任何问题,但产生输出的运行时间太长(对于N=25,接近10-15秒)。有没有办法缩短运行时间 function [a,x,t] = square1(N) j = 0 + i; L = -N:N; %a = zeros(size(k)); t = -7:0.01:7; %Signal Generation for k = 1:length(t) if( t(k) >= -5 & t(k) <= -

下面提供了计算傅里叶系数和生成原始信号的代码。问题是程序运行正常,没有任何问题,但产生输出的运行时间太长(对于N=25,接近10-15秒)。有没有办法缩短运行时间

function [a,x,t] = square1(N)

j = 0 + i;
L = -N:N;
%a = zeros(size(k));
t = -7:0.01:7;

%Signal Generation
for k = 1:length(t)
    if( t(k) >= -5 & t(k) <= -3) | (t(k) >= -1 & t(k) <= 1) | (t(k) >=3 & t(k) <= 5)
        x(k) = 1;
    else
        x(k) = 0;
    end
end

subplot(3,1,1);
xlabel('Time');
ylabel('Value');
title('Continuous Periodic Signal');
plot(t,x);

%Fourier Series Coefficient Plot
a = zeros(size(L));
for k = 1:length(L)
    syms time;
    a(k) = 1/4*int(exp(-j*L(k)*2*pi/4 * time),-1,1);
end
subplot(3,1,2);
stem(L,a);
xlabel('Discrete Value');
ylabel('Fourier Values');
title('Fourier Series Coefficient');

%Generation of the original signal 
time_duration = -10:0.01:10;
y = zeros(size(time_duration));
for m = 1:length(time_duration)
    y(m) = sum(a.*exp(j*L*2*pi/4*time_duration(m)))
end
subplot(3,1,3);
plot(time_duration,y);
xlabel('Time');
ylabel('Value');
title('Original Signal Constructed');
函数[a,x,t]=square1(N)
j=0+i;
L=-N:N;
%a=零(大小(k));
t=-7:0.01:7;
%信号产生
对于k=1:长度(t)

如果(t(k)>=-5&t(k)=-1&t(k)=3&t(k)Matlab有一个出色的内置分析器。只需使用您通常用于运行程序的命令运行分析器,并检查结果以确定哪些行消耗的时间最多。然后尝试优化该行或那些行。如果对如何优化有疑问,请使用profile info更新您的问题。RegardsTx作为建议,在我的程序中,t大部分时间消耗线是使用积分计算傅里叶级数系数,下一条是使用回路(最后一个回路)合成原始信号。你能告诉我一种在这两个循环中优化我的代码的方法吗?提前发送。不幸的是,我现在不在计算机附近,但我确信运行异常是由于使用了这些符号类型(syms时间)。如果不使用这些函数,您将看到速度提高了100倍或更多。当然,您还必须以新的方式进行有限积分,但我认为没有任何方法可以解决此问题。RegardsMatlab具有出色的内置探查器。只需使用通常用于运行程序的命令运行探查器,然后检查结果以确定哪些线消耗的时间最多。然后尝试优化该线或那些线。如果有疑问,请使用概要信息更新您的问题。RegardsTx以供建议。在我的程序中,最消耗时间的线是使用积分计算傅里叶级数系数,下一条是synt使用循环(最后一个循环)的原始信号的hesis。你能告诉我一种在这两个循环中优化代码的方法吗?提前发送。不幸的是,我现在不在计算机附近,但我确信,异常的运行时间是由于使用了这些符号类型(syms时间).去掉这些,你会看到速度提高了100倍或更多。当然,你也需要用一种新的方法来做有限积分,但我认为没有任何方法可以解决这个问题。谢谢