通信人家园

标题: 关于ofdm的求助?  [查看完整版帖子] [打印本页]

时间:  2024-1-17 11:42
作者: Youngpage_02     标题: 关于ofdm的求助?

假设我先qpsk,然后用N = 64的载波进行ofdm调制,fs = 20MHz,Bw = 20MHz,那么子载波间隔就为20MHz/N = 3.125e5Hz,整个ofdm基带信号的带宽应该就是在[-10 10]Mhz这个区间上,请问我如果想要在I路与Q路上加上载波,如将带宽移至[20Mhz  40Mhz],采样频率没变,这在matlab上应该怎么实现呢,按我的理解上载波后信号最高频率为10+40Mhz = 50MHz,采样频率应该要达到100MHz才行,这该怎么办呢?

时间:  2024-1-18 14:21
作者: lg2103

专业课早丢完了;我帮你问了一下AI,你看看有没有说得对的地方;
要将OFDM信号的带宽移至[20 MHz, 40 MHz],并在I路和Q路上加上载波,您可以按照以下步骤在MATLAB中实现:

1. 定义参数:
   - 原始OFDM信号的子载波间隔: Δf = 20 MHz / N = 3.125e5 Hz
   - 原始OFDM信号的带宽: [-10 MHz, 10 MHz]
   - 目标OFDM信号的带宽: [20 MHz, 40 MHz]
   - 采样频率: fs = 20 MHz

2. 生成原始OFDM信号:
   - 假设您已经生成了QPSK调制的基带信号,得到了一个复数向量 `baseband_signal`,其采样频率为 fs。

3. 将原始OFDM信号调制到目标带宽:
   - 使用 `ifft` 函数对 `baseband_signal` 进行反快速傅里叶变换,得到时域OFDM符号。
   - 将时域OFDM符号从原始带宽 [-10 MHz, 10 MHz] 变换到目标带宽 [20 MHz, 40 MHz]。可以通过将时域OFDM符号乘以2来实现带宽的扩展。
   - 将得到的时域OFDM符号进行正快速傅里叶变换,得到频域OFDM符号。

4. 添加载波:
   - 为了在I路和Q路上添加载波,可以使用 `cos` 和 `sin` 函数生成两个正弦波形,分别作为I路和Q路的载波。
   - 将频域OFDM符号与I路和Q路的载波相乘,得到加上载波的频域OFDM信号。

5. 将频域OFDM信号转换回时域:
   - 使用 `ifft` 函数对得到的频域OFDM信号进行反快速傅里叶变换,得到时域OFDM信号。

6. 调整采样频率:
   - 如果您希望保持采样频率不变,但信号的带宽已经扩展到 [20 MHz, 40 MHz],则需要将采样频率调整为该带宽的两倍,即 fs = 40 MHz。

下面是一个示例代码,展示了如何在MATLAB中实现上述步骤:

```matlab
% 定义参数
N = 64;
fs = 40e6;
baseband_bw = 20e6;
target_bw = 20e6;
delta_f = fs / N;

% 生成QPSK基带信号
baseband_signal = qpsk_modulation(...); % 假设已经实现了QPSK调制函数

% 将基带信号进行OFDM调制
ofdm_signal_freq = ifft(baseband_signal, N) * 2;

% 将频域OFDM信号移动到目标带宽
freq_axis = (-fs/2 : delta_f : fs/2 - delta_f).';
shifted_freq_axis = freq_axis + baseband_bw;
shifted_freq_axis = shifted_freq_axis - fs * floor(shifted_freq_axis / fs); % 处理频谱折叠
ofdm_signal_freq_shifted = interp1(freq_axis, ofdm_signal_freq, shifted_freq_axis);

% 添加载波
t = (0 : 1/fs : (N-1)/fs).';
I_carrier = cos(2*pi*20e6*t);
Q_carrier = sin(2*pi*20e6*t);
ofdm_signal_freq_shifted_I = ofdm_signal_freq_shifted .* I_carrier;
ofdm_signal_freq_shifted_Q = ofdm_signal_freq_shifted .* Q_carrier;

% 将频域OFDM信号转换回时域
ofdm_signal_time_I = ifft(ofdm_signal_freq_shifted_I, N);
ofdm_signal_time_Q = ifft(ofdm_signal_freq_shifted_Q, N);

% 调整采样频率:
   - 如果您希望保持采样频率不变,但信号的带宽已经扩展到 [20 MHz, 40 MHz],则需要将采样频率调整为该带宽的两倍,即 fs = 40 MHz。

上述代码中的示例是在保持采样频率不变的情况下实现带宽扩展,但这将导致采样频率低于理论要求的100 MHz。要达到理论要求的100 MHz 采样频率,您需要相应地调整代码中的参数,例如将 `fs` 设置为100 MHz,或者对 `ofdm_signal_freq_shifted_I` 和 `ofdm_signal_freq_shifted_Q` 进行过采样操作以达到所需的采样频率。

请注意,上述代码仅为示例,其中的函数调用和参数值需要根据您的实际情况进行适当的修改和实现。

时间:  2024-1-19 17:25
作者: 野人的飞翔

正确的步骤应该是:
1.过采样,因为你需要移到[20,40]M,为了满足奈奎斯特采样定理,至少得是80M。实际实现建议至少160MHz,留一倍
2.滤波。因为直接过采的高频率,[-10,10]M的信号也被复制到了[-10,10]±20N的位置,所以需要用滤波器将它们滤掉
3.移频。直接乘以一个e^(j*2*pi*fc*t)就行了,fc就是你要移的频率,你这里是30MHz
除此之外,需要提醒你的是,因为你FFT用的是一倍采样率,即信号带宽和IFFT的采样率相等,这样你的滤波器频谱需要设计得很陡,这其实不利于实现。要么是你确认能容忍滤波器阶数很高,要么是你能容忍带内信号靠近边带的部分会被抑制,要么就是你在IFFT时直接用2倍或4倍的采样率




通信人家园 (https://www.txrjy.com/) Powered by C114