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)就能实现频谱的搬移!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)