MATLAB实验——频率与频谱

本文介绍了如何在MATLAB中使用函数生成单音旋律,如《北京欢迎你》片段,包括定义singletone_melody函数以处理乐谱,进行傅里叶变换以分析幅度谱和相位谱。实验详细展示了从编写简谱到生成声音波形并进行信号处理的过程。

实验目的与意义

  1. 掌握matlab中生成声音波形的方法
  2. 掌握matlab中函数的定义、调用
  3. 掌握对非周期离散时间信号进行傅里叶变换的运算过程以及绘出幅度谱和相位谱的方法

实验过程

  1. 定义singletone_melody函数,其作用为传入乐谱x,返回声音波形y
%% 定义函数singletone_melody,传入乐谱x,返回声音波形y
function y = singletone_melody(x)
	%设定简谱对应频率,根据十二平均律,以A4=440Hz为基准
	index = -99:12;
	wave = [];
	%设定声音持续时间
	BeatTime = 0.5;
	%设定采样率为2000Hz
	fs = 2000;
	%求乐谱长度
	note_length = length(x);
	for note_index = 1:note_length
		note_freq = 440*2^(x(note_index)/12);
		note_wave = cos(2*pi*note_freq*[1:BeatTime*fs]/fs);
		wave = [wave,note_wave];
	end
	y = wave;
end
  1. 根据所选歌曲《北京欢迎你(片段)》的简谱编写乐谱tune
%编写乐谱
tune = [-5 -2 -5 -7 -5 -7 -5 -99 -5 -7 -12 -9 -5 -7 -99 ...
		-7 -9 -12 -9 -7 -5 -2 -7 -5 0 -2 -12 -7 -9 -99 ...
		-7 -9 -12 -9 -7 -5 -2 -7 -5 0 -2 0 -5 -99 ...
		-7 -5 -7 -9 -2 0 -7 -99 -12 -5 -5 -99 -7 -99 -5 -99 -99 -99 ...
		-5 -2 3 -2 0 -99 0 -2 -5 -5 -2 -2 -99 ...
		-2 -5 -2 0 3 3 -2 -5 -7 -2 -2 -5 -5 -99 ...
		-5 -2 3 -2 0 -99 3 5 3 -2 -5 -2 3 0 -99 ...
		-5 -7 -5 -2 7 5 -99 3 -99 3 3];
  1. 调用singletone_melody函数,传入乐谱tune,生成声音波形wave并导出wav格式音频文件
%调用singletone_melody函数,生成声音波形并导出
wave = singletone_melody(tune);
audiowrite("exp3_ZhangNuo.wav",wave,2000);
%播放
sound(wave,2000);
  1. 对声音波形wave进行傅里叶变换,因为wave是非周期离散时间信号,所以使用公式
    在这里插入图片描述
%对声音波形进行傅里叶变换
p = [];
n = 1:1:length(wave);%列标
w = 0:0.0004*pi:pi;%频率分辨率=2000/2*0.0004=0.4
p = exp(-1i*n'*w);%exp(-jΩn)
wave_f = wave*p;%傅里叶变换结果
  1. 使用subplot函数在同一个窗口中绘出幅度谱和相位谱。幅度谱中标出的点的横坐标为tune中出现的十种频率、其中最小的2Hz对应的-99为占位延长间隔时间用,无实际意义,剩下的七个从小到大分别对应乐谱中的降八度la、do、re、mi、so、la、升八度do、升八度re、升八度mi。
%绘出幅度谱
subplot(2,1,1);
plot(1000*w/pi,abs(wave_f));
title('北京欢迎你(片段)幅度谱');
xlabel('频率(Hz)');
%绘出相位谱
subplot(2,1,2);
plot(1000*w/pi,angle(wave_f));
title('北京欢迎你(片段)相位谱');
xlabel('频率(Hz)');

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值