全随机FIR滤波器,随机相位,MATLAB

时间:2015-03-23 16:03:27

标签: matlab filter signal-processing

所以我在matlab中有一个全通FIR滤波器的代码,我有几个问题。

首先是我将两者合二为一的方式正确吗?结果信号比原始信号长几个样本。

其次,我将如何获得像这样的幅度与相位图?从我已经的系数?

Magnitude and Phase

%% Initialise
clear all
close all
N=256;% filter tap length
Fs = 44100;      %# Samples per second
toneFreq = 50;  %# Tone frequency, in Hertz
nSeconds = 2;   %# Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));

rng(1, 'twister');% 
a=pi/2;
b=-a;

%% method

A = ones(N,1);%magnitude response set to 1
B = (b-a).*rand(N,1) + a;% random phase

hf=A.*(cos(B)+1j*sin(B)); %create coefficients
hn=ifft(hf); %convert to time domain
final=conv(hn,input); %filter?

1 个答案:

答案 0 :(得分:0)

  1. 使用conv(x,y,'same')。您可以使用help convdoc conv查看其文档。 RTM
  2. 如果您有信号处理工具箱,请使用freqz。再次,RTM。