% 定义采样频率和采样时长 fs = 5000; % 采样频率 T = 1; % 采样时长 t = 0:1/fs:T-1/fs; % 时间序列 % 定义载波频率和调制信号 fc = 1000; % 载波频率 fm = 100; % 调制信号频率 bw = 200; % 带宽 Ac = 1; % 载波幅度 Am = 0.5; % 调制信号幅度 m = Am*cos(2*pi*fm*t); % 调制信号 % VSB模拟调制 b = fir1(50,[fc-bw/2,fc+bw/2]/(fs/2)); % 滤波器设计 s = Ac*cos(2*pi*fc*t).*m - Ac*sin(2*pi*fc*t).*filter(b,1,m); % 数字化正交解调 f0 = fc; % 解调器本振频率 I = s.*cos(2*pi*f0*t); % I路信号 Q = s.*sin(2*pi*f0*t); % Q路信号 fir = fir1(50, 2*fm/fs); % FIR低通滤波器 I_filtered = filter(fir, 1, I); % I路信号低通滤波 Q_filtered = filter(fir, 1, Q); % Q路信号低通滤波 envelope = sqrt(I_filtered.^2+Q_filtered.^2); % 相干解调
时间: 2024-04-02 16:32:27 浏览: 64
这段代码实现了模拟VSB调制和数字化正交解调的功能。其中,首先定义了采样频率、采样时长、载波频率、调制信号频率、带宽、载波幅度、调制信号幅度、调制信号等参数。接着,通过fir1函数设计了带通滤波器b,用于实现VSB模拟调制,得到了模拟调制信号s。然后,定义了解调器本振频率f0,通过I和Q路信号的乘积得到了数字化正交解调信号。最后,通过fir1函数设计了低通滤波器,对I和Q路信号进行低通滤波,得到了相干解调信号envelope。整个过程包括了信号的调制、解调和滤波,以及相干解调的实现。
相关问题
fs = 8000; % 采样频率 t = 0:1/fs:0.01-1/fs; % 时间向量 k=linspace(0,fs,length(t));
这段代码的作用是创建一个长度为800的时间向量t,其中每个采样点之间的时间间隔为1/fs秒,即每个采样点的时间戳分别为0, 1/fs, 2/fs, …, (800-1)/fs。
接着,使用linspace函数创建一个长度为800的等间距采样点的索引向量k,其中k的第一个元素为0,最后一个元素为fs,中间的799个元素均匀分布在0和fs之间。这个索引向量可以用于在处理信号时对采样点进行访问、操作等。
需要注意的是,由于采样时间长度为0.01秒(即10毫秒),因此t的最后一个元素应该为0.01-1/fs,而不是0.01。这样才能保证时间向量t的长度为800,与采样点的个数一致。
t = 0:1/fs:5-1/fs什么意思
`t = 0:1/fs:5-1/fs` 是一个定义时间序列的语句,其中:
- `t` 表示时间序列的变量名;
- `0` 表示时间序列的起始时间;
- `1/fs` 表示时间序列的时间步长,其中 `fs` 是采样率,表示每秒采样的次数;
- `5-1/fs` 表示时间序列的结束时间。
因此,这个语句的作用是定义了一个从时间0开始,以时间步长1/fs递增,到时间5-1/fs结束的时间序列。这个时间序列可以用来描述信号在时间上的变化,也可以用来进行信号的采样和仿真。
阅读全文