音符1.2.3.4.5.6.7的时域频谱图和频域频谱图 matlab
时间: 2023-12-20 13:05:28 浏览: 37
好的,我可以为您提供时域频谱图和频域频谱图的 Matlab 代码。以下是代码示例:
时域频谱图代码:
```
% 输入音符频率
freq = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88];
% 采样率
fs = 44100;
% 时长
duration = 1;
% 生成音符信号
t = linspace(0, duration, duration*fs);
signal = zeros(size(t));
for i = 1:length(freq)
signal = signal + sin(2*pi*freq(i)*t);
end
% 绘制时域波形
subplot(2,1,1);
plot(t, signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain Signal');
% 绘制频谱图
subplot(2,1,2);
nfft = 2^nextpow2(length(signal));
Y = fft(signal, nfft)/length(signal);
f = fs/2*linspace(0, 1, nfft/2+1);
plot(f, 2*abs(Y(1:nfft/2+1)));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Frequency Domain Signal');
```
频域频谱图代码:
```
% 输入音符频率
freq = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88];
% 采样率
fs = 44100;
% 时长
duration = 1;
% 生成音符信号
t = linspace(0, duration, duration*fs);
signal = zeros(size(t));
for i = 1:length(freq)
signal = signal + sin(2*pi*freq(i)*t);
end
% 绘制频谱图
nfft = 2^nextpow2(length(signal));
Y = fft(signal, nfft)/length(signal);
f = fs/2*linspace(0, 1, nfft/2+1);
plot(f, 2*abs(Y(1:nfft/2+1)));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Frequency Domain Signal');
```
您可以将频率数组 freq 修改为任何您想要的音符。如果需要更多帮助,请随时问我。