matlab完成实验2,注意画三角波
时间: 2024-11-20 17:34:41 浏览: 34
好的,以下是使用 MATLAB 完成实验二 "时域采样和频域采样" 的具体步骤和代码。我们将按照实验内容逐步进行:
### 实验内容
#### 1. 时域采样的验证
**给定模拟信号:**
\[ x(t) = A e^{-\alpha t} \sin(\omega_1 t) u(t) \]
- \( A = 444.128 \)
- \( \alpha = 50 \pi \)
- \( \omega_1 = 50 \pi \)
**步骤:**
1. 生成时域离散信号。
2. 对三种采样频率(1000 Hz, 300 Hz, 200 Hz)进行采样。
3. 计算并绘制幅频特性曲线。
```matlab
% 参数设置
A = 444.128;
alpha = 50 * pi;
omega1 = 50 * pi;
Tp = 64e-3; % 观察时间 64 ms
t = 0:1e-5:Tp; % 时间向量
% 模拟信号
x_t = A * exp(-alpha * t) .* sin(omega1 * t);
% 采样频率
fs1 = 1000;
fs2 = 300;
fs3 = 200;
% 采样点数
N1 = fs1 * Tp;
N2 = fs2 * Tp;
N3 = fs3 * Tp;
% 采样
t1 = 0:1/fs1:Tp-1/fs1;
t2 = 0:1/fs2:Tp-alpha * t1) .* sin(omega1 * t1);
x2 = A * exp(-alpha * t2) .* sin(omega1 * t2);
x3 = A * exp(-alpha * t3) .* sin(omega1 * t3);
% 计算 FFT
X1 = fft(x1);
X2 = fft(x2);
X3 = fft(x3);
% 频率轴
f1 = linspace(0, fs1/2, N1/2 + 1);
f2 = linspace(0, fs2/2, N2/2 + 1);
f3 = linspace(0, fs3/2, N3/2 + 1);
% 幅频特性
figure;
subplot(3,2,1);
plot(t1, x1); title('1000 Hz 采样');
xlabel('时间 (s)');
ylabel('幅度');
subplot(3,2,2);
plot(f1, abs(X1(1:N1/2+1))); title('1000 Hz 幅频特性');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(3,2,3);
plot(t2, x2); title('300 Hz 采样');
xlabel('时间 (s)');
ylabel('幅度');
subplot(3,2,4);
plot(f2, abs(X2(1:N2/2+1))); title('300 Hz 幅频特性');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(3,2,5);
plot(t3, x3); title('200 Hz 采样');
xlabel('时间 (s)');
ylabel('幅度');
subplot(3,2,6);
plot(f3, abs(X3(1:N3/2+1))); title('200 Hz 幅频特性');
xlabel('频率 (Hz)');
ylabel('幅度');
```
#### 2. 频域采样的验证
**给定信号:**
\[ x(n) = \begin{cases}
n & 0 \leq n < 14 \\
26 - n & 14 \leq n < 27 \\
0 & \text{其他}
\end{cases} \]
**步骤:**
1. 生成频谱函数。
2. 对频谱函数进行 32 和 16 点等间隔采样。
3. 计算并绘制 IDFT 结果。
```matlab
% 生成信号
n = 0:26;
x_n = zeros(size(n));
x_n(1:14) = n(1:14);
x_n(15:end) = 26 - n(15:end);
% 计算频谱
X_w = fft(x_n, 27);
% 频域采样
N1 = 32;
N2 = 16;
X_k32 = X_w([1:2:27, 1:2:27]);
X_k16 = X_w(1:2:27);
% 计算 IDFT
x_n32 = ifft(X_k32, 32);
x_n16 = ifft(X_k16, 16);
% 绘制图形
figure;
subplot(3,2,1);
stem(n, x_n); title('原始三角波序列 x(n)');
xlabel('n');
ylabel('幅度');
subplot(3,2,2);
stem(abs(X_w)); title('频谱 |X(e^{j\omega})|');
xlabel('k');
ylabel('幅度');
subplot(3,2,3);
stem(0:N1-1, abs(X_k32)); title('32点频域采样 |X(k)|');
xlabel('k');
ylabel('幅度');
subplot(3,2,4);
stem(0:N2-1, abs(X_k16)); title('16点频域采样 |X(k)|');
xlabel('k');
ylabel('幅度');
subplot(3,2,5);
stem(0:31, real(x_n32)); title('32点 IDFT 序列 x(n)');
xlabel('n');
ylabel('幅度');
subplot(3,2,6);
stem(0:15, real(x_n16)); title('16点 IDFT 序列 x(n)');
xlabel('n');
ylabel('幅度');
```
### 实验报告要求
1. **整理程序步骤**:确保所有代码和流程图清晰明了。
2. **实验结果分析**:结合实验结果,分析时域和频域采样的影响。
3. **实验思考题**:
- 如果序列 \( x(n) \) 的长度为 \( M \),希望得到其频谱 \( X(e^{j\omega}) \) 在 \([0, 2\pi]\) 上的 \( N \) 点等间隔采样,当 \( N < M \) 时,可以通过补零的方式增加序列长度至 \( M \),然后进行 \( M \) 点 DFT 得到所需的频谱采样。
- 在时域采样的验证过程中,采用 DFT 或 FFT 是因为这些方法可以直接从时域信号计算频域特性,而不需要解析求解傅里叶变换。
希望这些代码和解释能帮助你顺利完成实验。如果有任何问题,请随时提问!
阅读全文