simulink中滤波器怎么设置

simulink中滤波器怎么设置,第1张

这个具体要看您是什么滤波器,如果是带通滤波就这样设置,比如你所需要的频率是20,,30,,40hz,因为有带宽的存在,您可以左右允许2-3hz的宽度,将参数设置为

[17.5,22.5],[27.5,32.5],[37.5,42.5].

如果是其他的滤波器,需要别的设置,具体您自己看看自己的滤波器,详细的设置需要参考具体的要求。

b = rcosdesign(beta,span,sps)

b = rcosdesign(beta,span,sps,shape)

描述:

b = rcosdesign(beta,span,sps)返回系数b,对应于一个滚降系数为beta的均方根升余弦FIR滤波器。滤波器截断为span个symbols,每个symbol包含sps个采样点。滤波器的阶数sps*span必须是偶数。滤波器能量为1。

b = rcosdesign(beta,span,sps,shape)返回一个均方根升余弦滤波器(shape为'sqrt')或者一个升余弦滤波器(shape为'normal')。

升余弦滤波器的例子

升余弦可以抑制码间干扰,发送和接收滤波器分开。

升余弦滤波器的主要参数是其滚降系数,滚降系数直接决定了滤波器的带宽。理想的升余弦滤波器由无限多个抽头。因此,实际上的升余弦滤波器是加窗的。窗的长度由FilterSpanInSymbols特性来控制。在本例中,我们将窗长度设定为6个symbol长度。这样的滤波器也有3个symbol的群延时。升余弦滤波器用在信号上采样后的脉冲成型。因此,我们也需要指定上采样倍数。升余弦滤波器的参数如下:

Nsym=6

beta=0.5

samsPerSym=8

用升余弦发射滤波器系统结构体构建滤波器并用fvtool来可视化滤波器特性。

rctFilt = comm.RaisedCosineTransmitFilter(...

'Shape', 'Normal', ...

'RolloffFactor', beta, ...

'FilterSpanInSymbols', Nsym, ...

'OutputSamplesPerSymbol', sampsPerSym)

% Visualize the impulse response

fvtool(rctFilt, 'Analysis', 'impulse')

这个结构体设计了一个直接型多项式单位能量FIR滤波器。滤波器阶数Nsym*sampsPerSym,抽头数Nsym*sampsPerSym+1。可以利用gain特性归一化滤波器系数以使滤波后的和未滤波数据匹配。

% Normalize to obtain maximum filter tap value of 1

b = coeffs(rctFilt)

rctFilt.Gain = 1/max(b.Numerator)

% Visualize the impulse response

fvtool(rctFilt, 'Analysis', 'impulse')

升余弦滤波器的时域脉冲响应表示

由于8倍过采样,在符号采样点0处为最大值,在其他nTs处其采样值为0。

升余弦滤波器的群延时是恒定值,因为脉冲响应是对称的。其群延时大小是其初始时间和峰值响应时间之差,如下图:

升余弦滤波器脉冲成型

我们产生一个双极性数据序列,然后在不引入ISI情况下用升余弦滤波器进行波形成型。

DataL = 20% Data length in symbols

R = 1000% Data rate

Fs = R * sampsPerSym% Sampling frequency

% Create a local random stream to be used by random number generators for

% repeatability

hStr = RandStream('mt19937ar', 'Seed', 0)

% Generate random data

x = 2*randi(hStr, [0 1], DataL, 1)-1

% Time vector sampled at symbol rate in milliseconds

tx = 1000 * (0: DataL - 1) / R

下图画出了源数据和插值后的信号。很难比较这两个信号由于滤波器峰值响应由滤波器群延时Nsym/(2*R)延后了。需要指出的是,我们在输入X后添加Nsym/2个0以使滤波器有用采样点都输出。

% Filter

yo = rctFilt([xzeros(Nsym/2,1)])

% Time vector sampled at sampling frequency in milliseconds

to = 1000 * (0: (DataL+Nsym/2)*sampsPerSym - 1) / Fs

% Plot data

fig1 = figure

stem(tx, x, 'kx')hold on

% Plot filtered data

plot(to, yo, 'b-')hold off

% Set axes and labels

axis([0 30 -1.7 1.7])xlabel('Time (ms)')ylabel('Amplitude')

legend('Transmitted Data', 'Upsampled Data', 'Location', 'southeast')

接下来步骤通过延后输入信号对升余弦滤波器群延时进行了补偿。现在容易看出升余弦滤波器如何上采样和对信号滤波。

% Filter group delay, since raised cosine filter is linear phase and

% symmetric.

fltDelay = Nsym / (2*R)

% Correct for propagation delay by removing filter transients

yo = yo(fltDelay*Fs+1:end)

to = 1000 * (0: DataL*sampsPerSym - 1) / Fs

% Plot data.

stem(tx, x, 'kx')hold on

% Plot filtered data.

plot(to, yo, 'b-')hold off

% Set axes and labels.

axis([0 25 -1.7 1.7])xlabel('Time (ms)')ylabel('Amplitude')

legend('Transmitted Data', 'Upsampled Data', 'Location', 'southeast')

滚降系数

这个步骤给出了改变滚降系数(0.5-->0.2)带来的效果。滚降系数变小使滤波器有更窄的变化带导致滤波后信号过冲变大。

滚降系数表示超出理论奈奎斯特带宽那部分带宽,当滚降系数为0则变成了理想矩形,滚降系数为1则为占用两倍奈奎斯特带宽的升余弦滤波器。

% Set roll-off factor to 0.2

rctFilt2 = comm.RaisedCosineTransmitFilter(...

'Shape', 'Normal', ...

'RolloffFactor', 0.2, ...

'FilterSpanInSymbols', Nsym, ...

'OutputSamplesPerSymbol', sampsPerSym)

% Normalize filter

b = coeffs(rctFilt2)

rctFilt2.Gain = 1/max(b.Numerator)

% Filter

yo1 = rctFilt2([xzeros(Nsym/2,1)])

% Correct for propagation delay by removing filter transients

yo1 = yo1(fltDelay*Fs+1:end)

% Plot data

stem(tx, x, 'kx')hold on

% Plot filtered data

plot(to, yo, 'b-',to, yo1, 'r-')hold off

% Set axes and labels

axis([0 25 -2 2])xlabel('Time (ms)')ylabel('Amplitude')

legend('Transmitted Data', 'beta = 0.5', 'beta = 0.2',...

'Location', 'southeast')

均方根升余弦滤波器

升余弦滤波器的典型应用是将滤波器分为发送和接收。发送端和接收端都使用根升余弦滤波器。发送和接收滤波器结合起来等效于升余弦滤波器导致了可忽略不计的ISI。

% Design raised cosine filter with given order in symbols

rctFilt3 = comm.RaisedCosineTransmitFilter(...

'Shape', 'Square root', ...

'RolloffFactor', beta, ...

'FilterSpanInSymbols', Nsym, ...

'OutputSamplesPerSymbol', sampsPerSym)

数据流升采样然后在发送端用根升余弦滤波器滤波。

% Upsample and filter.

yc = rctFilt3([xzeros(Nsym/2,1)])

% Correct for propagation delay by removing filter transients

yc = yc(fltDelay*Fs+1:end)

% Plot data.

stem(tx, x, 'kx')hold on

% Plot filtered data.

plot(to, yc, 'm-')hold off

% Set axes and labels.

axis([0 25 -1.7 1.7])xlabel('Time (ms)')ylabel('Amplitude')

legend('Transmitted Data', 'Sqrt. Raised Cosine', 'Location', 'southeast')

发送信号然后再接收端经过滤波。单位能量归一化保证发送接收等效滤波器和单位能量归一化升余弦滤波器相同。滤波接收信号等效于信号直接经过一个单独的升余弦滤波器。

% Design and normalize filter.

rcrFilt = comm.RaisedCosineReceiveFilter(...

'Shape', 'Square root', ...

'RolloffFactor', beta, ...

'FilterSpanInSymbols', Nsym, ...

'InputSamplesPerSymbol', sampsPerSym, ...

'DecimationFactor', 1)

% Filter at the receiver.

yr = rcrFilt([yczeros(Nsym*sampsPerSym/2, 1)])

% Correct for propagation delay by removing filter transients

yr = yr(fltDelay*Fs+1:end)

% Plot data.

stem(tx, x, 'kx')hold on

% Plot filtered data.

plot(to, yr, 'b-',to, yo, 'm:')hold off

% Set axes and labels.

axis([0 25 -1.7 1.7])xlabel('Time (ms)')ylabel('Amplitude')

legend('Transmitted Data', 'Rcv Filter Output',...

'Raised Cosine Filter Output', 'Location', 'southeast')

相关资源:matlab_16QAM_2进制信源_循环码_升余弦滚降函数_高斯白噪声_最小...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11380373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存