已知序列x(n)=cos(2Π*0.24Π)+cos(2Π*0.26Π),0<=n<=99,试绘制信号x(n及傅里叶变换的幅值图)。用matlab实现代码
时间: 2024-12-10 12:30:45 浏览: 27
首先,了解您所描述的问题,这是一个关于数字信号处理中的基本操作,需要生成一个由两个余弦函数组成的时间序列,并计算其离散傅立叶变换(DFT)。在MATLAB中,可以使用`cos`函数生成信号,`fft`函数计算DFT,然后利用`plot`绘制幅度图。下面是一个简单的MATLAB代码示例:
```Matlab
% 定义信号序列的长度
N = 100;
f1 = 0.24; % 第一个频率分量
f2 = 0.26; % 第二个频率分量
% 生成信号x(n)
x = cos(2*pi*f1*(0:N-1)) + cos(2*pi*f2*(0:N-1));
% 计算离散傅立叶变换
X = fft(x);
% 取实部丢弃虚部,因为对称性原因,我们只关心正频率部分
X = abs(X(1:(N/2+1)));
% 计算频率轴
fs = 1/(N/N); % Sampling frequency (采样频率)
frequencies = (0:N/2) * fs;
% 绘制时间序列和幅度谱
figure;
subplot(2,1,1);
stem(0:N-1, x);
xlabel('Sample Index');
ylabel('Amplitude');
title('Signal x(n)');
subplot(2,1,2);
plot(frequencies, X(1:N/2+1));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Magnitude Spectrum of x(n)');
% 显示图形
show();
```
这个代码会生成两个子图,上一个是信号 `x(n)` 的波形图,下一个是其幅度谱图。注意由于 DFT 的周期性,通常我们会只显示非零频率部分。
阅读全文