MATLAB设计,用布拉克曼窗设计理想线性相位90°移相带通滤波器

MATLAB设计,用布拉克曼窗设计理想线性相位90°移相带通滤波器,第1张

clear;
clc;
N=81; % order
w0=05pi;
wc=02pi;
window=blackman(N);
n=1:N;
hd=2sin(w0(n-41))sin(wc(n-41))/pi/(n-41);
hd(41)=0;
h=hdrot90(window);
[mag,rad]=freqz(h);
figure(1),
freqz(h);
[impzh,t]=impz(h,[1],N);
figure(2),
plot(t,impzh);
title('Impulse Response');
figure(3),
plot(rad/pi,20log10(abs(mag)));grid;
title('Frequence Response of Band-Pass Filter');

在100-2000的范围就是对应平移之后的t。平移曲线在数学上的定义就是移横轴。

t=0:00001:01;

y=sin(2pi30t);

figure;

plot(t,y);

hold on;

plot(t-005,y,'r');

legend('平移前','平移后');

%such as:

%画出y=x^2的图像

x=-1:001:1;

y=x^2;

plot(x,y);

hold on;

%向上平移一个单位;

y1=x^2+ones(size(x));

plot(x,y1);

grid on;

函数图形中平移作用

一、通过简单的平移可以构造精美的图形。也就是花边,通常用于装饰,过程就是复制-平移-粘贴。

二、平移常与平行线有关,平移可以将一个角,一条线段,一个图形平移到另一个位置,是分散的条件集中到一个图形上,使问题得到解决。

三、把一个图形整体沿某一直线方向移动,会得到一个新的图形,新图形与原图形的形状和大小完全相同。

四、新图形中的每一点,都是由原图形中的某一点移动后得到的,这两个点是对应点。连接各组对应点的线段平行且相等(或在同一直线上)。

非常简单。如果你是用01字符串来表示二进制,那么matlab有现成的函数circshift可用,方法是:
circshift(a',-n)'
只需要输入二进制字符串a和需要左移的位数n就可以调用来得到答案,举几个例子:
>> a = '10011110'; n = 1; circshift(a',-n)'
ans =
00111101
>> a = '10011110'; n = 2; circshift(a',-n)'
ans =
01111010
>> a = '10011110'; n = 3; circshift(a',-n)'
ans =
11110100
>> a = '10011110'; n = 4; circshift(a',-n)'
ans =
11101001
circshift这个函数本身的第二个参数如果为正则右移,如果为负则左移。而且可以用于移位任何维数的矩阵,不是你问的问题,就不多说了。
如果你不是用01字符串,而是用本身的数值的内部二进制形式,那么有两种方法,一种是用dec2bin函数转换为二进制字符串,在左边添0扩展到你需要的位数,再用如上circshift函数。
另一种方法是用bitshift函数,不过需要自己判断数据类型的长度、有符号还是无符号、以及最高位是1还是0,会稍微复杂一些,通常和fi函数配合可以简化这些问题。具体的可以查看bitshift和fi函数的文档。

先假设发射信号是一个载频500Hz的正弦函数,则 s(t)=sin(2pift) , 其中f=500 那么要表示1000个01的数据,实际上就是在特定的时间t里 s=0或1。
换言之,s=0的条件是 2pift=0或pi ;s=1的条件是 2pift=05pi。
根据你的数据,把对应的t计算出来,作为一个数组存储起来。
剩下的就是你说的乘以cos(2pifct)就能实现频谱的搬移!


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

原文地址: http://outofmemory.cn/yw/12709054.html

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

发表评论

登录后才能评论

评论列表(0条)

保存