彻底理解宽带信号在频域分解为窄带信号

1.    ISM方法

ISM(incoherent signal method)方法,即非相干信号子空间方法是最早出现的宽带DOA方法,该方法将宽带信号在频域内分解成J 个窄带分量,然后再每个子带上直接进行窄带处理,即对每个子带的谱密度矩阵进行特征分解,根据信号子空间和噪声子空间的正交性构造空间谱,对所有子带的空间谱进行平均,最后得到宽带信号空间谱估计。


2.    如何理解宽带变成窄带的过程

 

这个过程确实不好理解。首先要理解时域和频域两个概念。

频域frequency domain 是描述信号在频率方面特性时用到的一种坐标系。

频域(频率域)——自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说的频谱图。频谱图描述了信号的频率结构及频率与该频率信号幅度的关系。

对信号进行时域分析时,有时一些信号的时域参数相同,但并不能说明信号就完全相同。因为信号不仅随时间变化,还与频率、相位等信息有关,这就需要进一步分析信号的频率结构,并在频率域中对信号进行描述。

时域:时域是描述数学函数或物理信号对时间的关系。例如一个信号的时域波形可以表达信号随着时间的变化。

若考虑离散时间,时域中的函数或信号,在各个离散时间点的数值均为已知。若考虑连续时间,则函数或信号在任意时间的数值均为已知。

 

现在就根据实际经验来说说FFT结果的具体物理意义。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此啰嗦了。
    
采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。
    
假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。

 

关键部分:比如我们现在对麦克风阵列信号的采样频率是Fs=64000,傅立叶变换点数是1024,那么对每个子间隔进行J点的离散傅立叶变换,就得到了宽带内J个不相重叠的子带。所以我们得到了宽带内1024个不重叠的子带。每个窄带的频带宽度是64000/1024=62.5Hz;因为语音信号频率主要集中在300~3000Hz之间,而且某点n所表示的频率为:Fn=(n-1)*Fs/N,所以我们选取的测试数据主要集中在5~49个频点之间,超过或者小于这个范围测试的话一般会出现测试偏差,或者出现旁瓣,影响主瓣峰值位置的判断。

就这样,3003000Hz之间的宽带信号被分解成了45个窄带,每个窄带的宽度是62.5Hz;考虑到实际接收到的数据矩阵是有限长度的,即数据协方差矩阵的最大似然估计是

                                                                                 

其中L是快拍数,快拍数可大可小,当L取很小的时候也可以估计出角度,不过误差比较大,一般取5~10之间。

  • 8
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB可以通过FFT(快速傅里叶变换)函数将信号从时域转换到频域,并通过IFFT(逆傅里叶变换)函数将信号频域转换回时域。 以下是一个例子,展示如何使用MATLAB将信号从时域转换到频域,进行频域分解,并将其再转换回时域。 假设我们有一个包含三个正弦波的信号: ```matlab % 生成信号 fs = 1000; % 采样率 t = 0:1/fs:1-1/fs; % 时间向量 f1 = 50; % 第一个频率 f2 = 120; % 第二个频率 f3 = 300; % 第三个频率 x = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t) + 0.3*sin(2*pi*f3*t); ``` 我们可以使用FFT函数将信号从时域转换到频域: ```matlab % 将信号从时域转换到频域 X = fft(x); ``` 现在,我们可以对频域信号进行分析,例如计算幅度谱和相位谱: ```matlab % 计算幅度谱和相位谱 X_mag = abs(X); % 幅度谱 X_phase = angle(X); % 相位谱 ``` 我们也可以通过对幅度谱进行修剪,只留下最强的频率分量来滤波信号: ```matlab % 滤波信号 num_harmonics = 3; % 保留的谐波数 [~,idx] = sort(X_mag,'descend'); % 按幅度谱排序 X_filtered = zeros(size(X)); X_filtered(idx(1:num_harmonics)) = X(idx(1:num_harmonics)); % 只保留前num_harmonics个谐波 ``` 最后,我们可以使用IFFT函数将信号频域转换回时域,并绘制原始信号和滤波后的信号: ```matlab % 将信号频域转换回时域 x_filtered = ifft(X_filtered); % 绘制信号 figure; subplot(2,1,1); plot(t,x); xlabel('时间 (秒)'); ylabel('幅度'); title('原始信号'); subplot(2,1,2); plot(t,x_filtered); xlabel('时间 (秒)'); ylabel('幅度'); title('滤波后的信号'); ``` 这将显示原始信号和滤波后的信号的波形,以及它们在时域中的频率分量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值