Matlab/Octave:FIR内插提供缩小信号

Matlab/Octave:FIR内插提供缩小信号,matlab,filter,signal-processing,octave,Matlab,Filter,Signal Processing,Octave,给定x(n),其上采样系数为4,我想用以下代码对其进行插值: pkg负载信号; n=[1:100]; x=n*cos(n); 上采样=上采样(x,4); b=第一类(30,0.25,'低'); 插值=滤波器(b,1,上采样)(16:结束); 图形 茎([1:4:400],x); 等等 茎(内插); 情节是: 其中,原始x(n)为蓝色,插值的x(n)为红色 为什么插值信号会被缩小 这看起来更好: pkg负载信号; n=[1:100]; x=n*cos(n); 上采样=上采样(x,4); b=第

给定x(n),其上采样系数为4,我想用以下代码对其进行插值:

pkg负载信号;
n=[1:100];
x=n*cos(n);
上采样=上采样(x,4);
b=第一类(30,0.25,'低');
插值=滤波器(b,1,上采样)(16:结束);
图形
茎([1:4:400],x);
等等
茎(内插);
情节是:

其中,原始x(n)为蓝色,插值的x(n)为红色

为什么插值信号会被缩小

这看起来更好:

pkg负载信号;
n=[1:100];
x=n*cos(n);
上采样=上采样(x,4);
b=第一类(30,0.25,'低');
插值=滤波器(b,1,上采样)(16:结束);
图形
茎([1:4:400],x);
等等
阀杆(内插*4);%注意这里4的乘法


但是为什么它会起作用呢?还是我只是幸运?

我可以看出以下两者之间存在着明显的相关性:

upsample(x,4)

upsample
在变量的每对值之间插入3个零。因此,过滤函数将产生一个平滑的结果。如果你的结果令你满意,那就好了。或者,尝试像这样规避问题:

pkg load signal;
n = 1:100;
x = n .* cos(n);
b = fir1(30,0.25,'low');
interpolated = filter(b,1,x)(4:end);
final = upsample(interpolated,4);
figure;
stem([1:4:400],x);
hold on;
stem(final);

我可以看出以下两者之间存在明显的相关性:

upsample(x,4)

upsample
在变量的每对值之间插入3个零。因此,过滤函数将产生一个平滑的结果。如果你的结果令你满意,那就好了。或者,尝试像这样规避问题:

pkg load signal;
n = 1:100;
x = n .* cos(n);
b = fir1(30,0.25,'low');
interpolated = filter(b,1,x)(4:end);
final = upsample(interpolated,4);
figure;
stem([1:4:400],x);
hold on;
stem(final);

如果我的回答有助于你解决问题,请接受。谢谢如果我的回答有助于你解决问题,请接受。谢谢