如何将归一化频率转换为实际频率

Posted

技术标签:

【中文标题】如何将归一化频率转换为实际频率【英文标题】:how to convert normalized frequency to actual frequency 【发布时间】:2014-02-16 14:46:02 【问题描述】:

假设我们有以下代码

function [ x ] = generate1(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn;
%[pks,locs] = findpeaks(x);
 plot(x)
end

我已使用以下命令生成信号

y=generate1(3,500,1);

我有501个长度的样本,现在我想用音乐方法检测频率,即100和200,假设参数个数是2,所以我试过了

pmusic(y,4)

如何从这张图片中确定实际频率?我认为我需要将 a 从归一化频率转换为实际频率,因为我知道归一化频率与 $f/f_s$ 相同,其中 $f_s$ 是采样频率,但在此我该怎么办?

【问题讨论】:

【参考方案1】:

您需要乘以采样率的一半。即,归一化频率“1.0”为 Fsample/2。

举个简单的例子,这是一个以 4KHz 采样的 200Hz 信号:

x=sin(2*pi*200/4000*[0:1000])

运行 pmusic(x, 2) 在归一化频率 0.1 处给出明显的峰值。 转换为 Hz,即 0.1*4000/2 = 200 Hz。

我已经修改了您的函数,使其更易于分析(只有一个正弦函数,没有随机性):

 function x = gen(N,m)
    f1 = 100;
    T  = 1/f1;
    dt = N*T/m;

    x = sin(2*pi*f1*dt*[0:num_of_samples]);
 end

 x = gen(3,500,1e3);

要获得更好的分辨率,请使用pmusic(x,2,[0:.01:0.2])

【讨论】:

非常感谢,在我的情况下我应该怎么做?让我们假设 N=3 和 m=500 但为什么是 0.1?在我的情况下采样频率是 16666.66666666667,所以我应该有 0.1*16666.66666666667/2? 你在吗?我无法继续 在我的图片峰值中,它没有以精确的归一化频率指示,我猜是吗? 您必须知道采样频率才能估算出真实频率。

以上是关于如何将归一化频率转换为实际频率的主要内容,如果未能解决你的问题,请参考以下文章

Python遥感图像处理应用篇(十六):GDAL 将归一化处理csv数据转化为遥感影像

Python遥感图像处理应用篇(十六):GDAL 将归一化处理csv数据转化为遥感影像

滤波器的归一化频率

数字信号处理中各种频率关系

归一化整数到/从浮点转换

Python遥感图像处理应用篇(十七):GDAL 将归一化处理csv数据转化为多波段遥感影像