【问题标题】:find RMS value in frequency domain在频域中找到 RMS 值
【发布时间】:2014-06-14 01:11:16
【问题描述】:

我想在频域中找到 RMS 值,我用这个网站寻求帮助

http://www.dsprelated.com/showmessage/123177/1.php

但是它是使用 FFT 计算的,但是如果我使用 periodgram 怎么办?而不是这个代码

X = fft(x)

Parseval's Theorem

sum(x.^2) =  sum(abs(X).^2)/N

RMS == sqrt(sum(x.^2))/N) = sqrt(sum(abs(X/N).^2))

在周期图的情况下代码如何变化?提前谢谢

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    这是一个非常古老的案例,但我做了一个简单的程序来计算时域和频域的功率。对于在频域中计算信号的 RMS 值,仅周期图的积分给出与时域相同的结果 下面是带有波兰语 cmets 的代码,但变量是英文的,所以你应该猜一下每一行的作用。

    clear all 
    clc
    N=1024; %liczba próbek sygna?u
    f1=5; %cz?stotliwo?ci sk?adowych sinusoidalnych sygna?u
    f2=15;
    f3=30;
    fs=1000; %czestotliwosc próbkowania
    td=1/fs; %okres sygnalu
    t=(0:N-1)*td;
    war=0.8; %wariancja zak?ócenia
    sig=sqrt(war); %odchylenie standardowe zak?ócenia
    Nf=1024; %liczba próbek transformaty Fouriera
    %sygna? losowy i deterministyczny
    
    for i=1:N
     %yn(i)=randn;
     %y(i)=sin(2*pi*f1*td*i) + 0.5*sin(2*pi*f2*td*i) + ...
     %0.25*sin(2*pi*f3*td*i) +sig*randn;
    
        y(i)=5*sin(2*pi*f1*td*i)+sin(2*pi*f2*td*i);
    
    end
    
    %Obliczenie wartosci skutecznej sygnału
    
    
    RMS_calc_by_hand=sqrt((1/Nf)*sum(y.^2));
    RMS_time_domain=rms(y);
    
    %transformata Fouriera
    Y=2*abs(fft(y,Nf))/Nf;
    Y=Y(1:Nf/2);
    
    
    df=fs/Nf;
    f=0:df:fs/2-df;
    %Inna forma zapisu
    %f=df*(0:Nf/2-1); 
    
    % wykres sygnału rzeczywistego
    subplot(3,2,1);
    plot(t,y);
    title('a(t)');
    xlabel('t [s]');
    ylabel('a [mm/s]');
    
    subplot(3,2,2);
    plot(f,Y);
    % formatowanie wykresu
    title('a(f)');
    xlabel('f [Hz]');
    ylabel('a [mm/s]');
    
    %gestosc widmowa mocy
    subplot(3,2,3);
    
    
    %PSD
    [P,w] = periodogram(y,[],Nf,fs);
    plot (w,P);
    title('gestosc widmowa mocy periodogram');
    
    RMS_freq_domain =sqrt(trapz(w,P));
    

    【讨论】:

      【解决方案2】:

      周期图P = P(f) 表示信号x = x(t) 的功率如何分布在不同频率上。因此,它可以被视为与频率f 相关联的函数,x 的傅里叶变换的绝对值的平方在f 处评估。

      换句话说,就您的符号而言,x = x(t) 的周期图为 P(f) = |X|^2(f)

      因此,RMS 满足

       RMS = sqrt(sum(P))/N.
      

      警告:

      我不太相信你的标准化因素。原则上,Parseval 定理指出傅里叶变换是L^2 对其自身的等距同构。因此,一旦完成傅里叶变换,就会保留信号的范数。 尽管如此,这种转换的不同定义可能会导致不同的归一化因子(例如您的1/N)。简而言之,应该注意这个常数。

      【讨论】:

      • 非常感谢,所以如果我使用归一化因子作为 1/N,是否有错误?
      • 频域中的波峰因数怎么样?en.wikipedia.org/wiki/Crest_factor我可以在频域中使用这个术语吗?
      • 这完全取决于您对变换所做的工作,以及您如何计算周期图。从您用于周期图的函数中,您应该能够看到哪个归一化常数是正确的。尽管如此,请记住,我们谈论的是常数,因此您可以进行大部分分析,但无论如何您都可以进行(例如峰值,...)
      • @datodatuashvili,抱歉,无法提供可靠的帮助。我从来没用过。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      相关资源
      最近更新 更多