|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本人在模拟一个关于RF接收机前端的组件(主要是开关电容滤波器)
这个组件的功能是可以将高频信号降频到ADC可以接收的范围
我的原始信号频率是2.4GHZ,根据paper上说的,第1步是直接采样,用4.8GHZ的LO进行采样,采样后使用半整流后的正半周期采样信号.上述完成后,采样信号以8个数值为一组,按照时间顺序,进入电容器(过程相当于FIR抽样滤波,将2.4GHZ的采样信号降低到300MHZ),接着信号通过一个IIR滤波器.当头8个采样信号存储到电容器后,从第9个采样信号开始,采样信号开始存储到第2个并行的电容器,存储过程一直持续到第16个采样信号为止.以此类推,当第4组采样信号也存储到第4个电容器,并通过IIR滤波器后(每组滤波过程都是相对独立的),由于时间的扩展,这4个并行的电容器又相当于一个FIR 抽样滤波器,将300MHZ频率降低到75MHZ.
因为对matlab一直不是很熟悉,下面的程序有些问题想请教下
dt = 0.000000000001;
tf = 0.000000001; t= 0:dt:tf;
ua= sin(2*pi*2.4e9*t-pi/2); %原始信号
T= 1/(4.8e9); %采样周期
n = 0: tf/T;
u = sin(2*pi*2.4e9*n*T-pi/2); %采样信号
for num = 1:2:tf/T
u(num)= sin(2*pi*2.4e9*num*T-pi/2); %离散半整流采样信号(正半周期)
end
p = n/16;
for q = 1:p
Uin(q) = [u((16*(q-1))+1),u((16*(q-1))+3),u((16*(q-1))+5),u((16*(q-1))+7),u((16*(q-1))+9),u((16*(q-1))+11),u((16*(q-1))+13),u((16*(q-1))+15)]; %8个离散采样信号值
b1 = [1,1,1,1,1,1,1,1];a1 = [1]; %第1个FIR滤波器系数
Uout(q) = filter(b1,a1,Uin(q)); % FIR滤波(移动平均 Temporal moving average)
w1(q) = downsample(Uout(q),8); %下采样
w(q) = 8*w1(q); %增益
b2 = [1]; a2 = [1,-0.9686]; %第1个IIR滤波器系数
s(q) = filter(b2,a2,w(q)); %IIR滤波
c(q) = (1-0.9686)*s(q); %增益
end
Xin =[c(1), c(2), c(3),c(4)]; %采集4个输出信号
b3 = [0.25,0.25,0.25,0.25]; a3 = [1];%第2个FIR滤波器系数
Y = filter(b3,a3,Xin); %FIR滤波(空间移动平均 spatial MA)
现在程序报错说Underfined function or method 'c' for input arguments of type 'double',我想请问下出错的原因,另外我对matlab实在是不太明白,不知道这个程序写的到底对不对,是不是和我所描述的过程是一样的.还请大家给看看
[ 本帖最后由 eight 于 2007-8-3 11:43 编辑 ] |
|