画出原始信号x(t)=2sin(2*pi*100t)+3cos(2*pi*500t)+sin(2*pi*800t)的时域波形和幅度谱
时间: 2023-07-23 14:15:36 浏览: 118
以下是Matlab代码实现:
```matlab
% 定义时间轴
t = 0:0.0001:0.5;
% 定义原始信号
x = 2*sin(2*pi*100*t) + 3*cos(2*pi*500*t) + sin(2*pi*800*t);
% 时域波形
subplot(2,1,1); % 将画布分为2行1列,第1个子图
plot(t, x);
xlabel('时间/s');
ylabel('幅值');
title('时域波形');
% 幅度谱
subplot(2,1,2); % 将画布分为2行1列,第2个子图
N = length(x); % 信号长度
fs = N/0.5; % 采样频率
f = (0:N-1)*fs/N; % 频率轴
X = abs(fft(x))/N; % 取模后取归一化
plot(f, X);
xlabel('频率/Hz');
ylabel('幅度');
title('幅度谱');
```
代码与上一个问题中的代码基本相同,只是在计算频率轴时略有不同。在幅度谱中,我们将频率轴改为从0开始,因为我们只需要表示正频率部分的幅度谱。其他细节可以参考上一个问题的解答。
相关问题
画出原始信号x(t)=2sin(2*pi*100t)+3cos(2*pi*500t)+sin(2*pi*800t)的时域波形和
频域波形。
以下是Matlab代码实现:
```matlab
% 定义时间轴
t = 0:0.0001:0.5;
% 定义原始信号
x = 2*sin(2*pi*100*t) + 3*cos(2*pi*500*t) + sin(2*pi*800*t);
% 时域波形
subplot(2,1,1); % 将画布分为2行1列,第1个子图
plot(t, x);
xlabel('时间/s');
ylabel('幅值');
title('时域波形');
% 频域波形
subplot(2,1,2); % 将画布分为2行1列,第2个子图
N = length(x); % 信号长度
fs = N/0.5; % 采样频率
f = (-N/2:N/2-1)*fs/N; % 频率轴
X = abs(fftshift(fft(x)))/N; % 取模后取归一化
plot(f, X);
xlabel('频率/Hz');
ylabel('幅值');
title('频域波形');
```
在代码中,我们定义了一个长度为0.5秒的时间轴,然后计算出原始信号的值。接着,我们使用subplot函数将画布分为两个子图,分别绘制时域波形和频域波形。
时域波形使用plot函数绘制,x轴为时间轴,y轴为信号幅值,标题为“时域波形”。
频域波形需要先计算出信号的FFT,然后将其取模后归一化,使用fftshift函数将零频分量移到频谱中心,最后使用plot函数绘制。x轴为频率轴,y轴为信号幅值,标题为“频域波形”。
原始信号为x(t)=2sin(2π*100t)+3cos(2π*500t)+sin(2*800t),写出matlab时域波形和幅度谱的代码
好的,下面是Matlab的代码示例:
```matlab
% 定义时间范围和时间步长
t = 0:0.0001:0.5;
% 定义原始信号
x = 2*sin(2*pi*100*t) + 3*cos(2*pi*500*t) + sin(2*pi*800*t);
% 画出时域波形
figure(1);
plot(t, x);
title('时域波形');
xlabel('时间 (s)');
ylabel('幅度');
% 计算幅度谱
N = length(x);
X = abs(fft(x)/N);
% 画出幅度谱
f = (0:N-1)/N*1000;
figure(2);
plot(f, X);
title('幅度谱');
xlabel('频率 (Hz)');
ylabel('振幅');
```
这段代码首先定义了时间范围和时间步长,然后根据原始信号的公式计算出原始信号 $x(t)$。接着,使用 `plot` 函数画出原始信号的时域波形。然后,使用 `fft` 函数计算出原始信号的频域表示 $X(f)$,并根据公式 $|X(f)|$ 计算出幅度谱。最后,使用 `plot` 函数画出幅度谱。
希望这个代码示例能够帮助你更好地理解如何在Matlab中画出时域波形和幅度谱。
阅读全文