MATLAB 怎么生成wav文件

作者&投稿:费知 (若有异议请与网页底部的电邮联系)
在MATLAB如何生成一个WAV文件~

for n = 1 : 999
d5(n) = sin(0.5906*n) + sin(1.0245*n);
end;
sound(d5, 8192)

d6=d5/2; %avoid to be clipped
wavwrite(d6,8192,16,'d5.wav');

wavwrite(y,filename) 把你的信号y,写为以filename命名的wav文件

我用的是7.5,你在帮助里搜一下看有没有wavwrite这个函数

1、用CooEdit录制声音,可以选择采样率为96kHz,单声道。录制声音长度约为10s,然后存储文件为Windows PCM wav文件格式。文件名最好包括进入测试条件。测试多组数据,将其保存在同一个文件夹中,便于matlab后期的批处理。
2、使用matlab读取一个文件夹里的所有wav文件。在下面的操作中,把sqrt0目录下的所有wav文件名读取到fnames中了。
dirs=dir('sqrt0/*.wav'); % 读取当前目录下所有的excel文件
dircell=struct2cell(dirs)' ; % 结构体(struct)转换成元胞类型(cell),转置一下是让文件名按列排列。
fnames=dircell(:,1); % 第一A列是文件名
3、通过wavread函数读取wav文件数据,并将其存储在Ydata和Fdata中。
fnumber=size(fnames,1); % 求取表格行数,即文件个数
for N=1:1:fnumber
filename=char(fnames(N,1)); % 将cell转换为string
filename=strcat(path,filename); % 校正文件路径
[Y,Fs]=wavread(filename,Num); % 读取当前文件前65536个点
Ydata(N,:) = Y; % 记录数据
Fdata(N,:) = Fs; % 记录采样率
end
4、对数据做FFT运算,并绘制其频谱图。
for N=1:1:fnumber
yy = fft(Ydata(N,:),Num); % 对数据做Num点FFT运算
Yfft(N,:) = 20*log10(abs(yy)); % 对计算结果取模
figure;
ff = linspace(0,Fdata(N),Num); % 在0-采样率之间取Num个频率点
plot(ff,Yfft(N,:),'r'); % 绘制频谱
grid on;
axis([400 3000 -20 70]);
end
5、调整修饰绘图,并存储。下面是用到的一些命令。
set(gcf,'Position',[200 200 350 250]); % 设置绘图的大小
tt = strcat(Freq(N,:),',',Sqrt(N,:),',',Modindex(N,:));
title(tt); % 设置绘图标题
legend('m=1.0');
xlabel('Frequency(Hz)','FontSize',14,'FontName','Times New Roman');% 设置x坐标轴标注字体
ylabel('Amplitude(dB)','FontSize',14,'FontName','Times New Roman');
Note = strcat('m=',Modindex(N,:));
text(1800,55,Note,'FontSize',14); % 在400,300位置添加标注
set(gca,'FontSize',12); % 设置坐标轴字体
set(gcf,'visible','off'); % 不显示图片
tt = strcat(Freq(N,:),'_',Sqrt(N,:),'_',Modindex(N,:),'.emf');
saveas(gcf,tt,'emf'); % 存储绘图为eps格式
6、将生成的图片,导入到excel中。因为excel不能识别eps图片,所以生成emf图片。两种格式都是矢量图,放大缩小不会失真。可以调出excel工具栏的图片工具,第一个工具即为插入快捷键。这样会更方便快捷。

写wav文件用wavwrite(f,'name.wav')
前面参数表示采样频率,要跟你的程序里面的采样一致,比如说一首歌的时长为ts,有n个采样点,f=n/t
波动方程自己拟合嘛,例如要产生一个c大调的la/6,
f=440;
t=0:1/44.1e3:3;
y=exp(t).*sin(2.*pi.*f.*t);%exp为指数衰减
不同频率代表不同音符,在时间轴上有序排列就产生一段美妙的音乐

应该是16bit,十六位吧
双声道,100个采样点,44.1KHz采样频率:
y=rand(100,2);
wavwrite(y,44.1e3,16,'test.wav');


永胜县15641058706: 我的语音文件是存放在D:\\matlab\\R2017a\\TEST000\\yuyin如何用MATLAB sprintf 提取.wav文件 -
庞邦肠胃: 在matlab中,可以用wavread函数来打开wav格式的声音文件.wavread函数的用法如下: y = wavread(filename)% 输入参数filename为指定载入的音频文件名称,为单引号引出的字符串形式.返回参数y% % 为所读取的音频数据样本.当文件无扩展名时,系统自动附加扩展名.wav.例子:y=wavread('d:\shuidaosound.wav');

永胜县15641058706: 如何使用matlab生成一个wav文件 用wavwrite生成失败 -
庞邦肠胃: http://www.ilovematlab.cn/viewthread.php?tid=48107&sid=ww7xkI

永胜县15641058706: 怎样用matlab分割音频文件(wav)或其他 -
庞邦肠胃: 用matlab根据lrc文件切割音频,适用于wav音频(一句歌词一个音频一个lrc)代码如下:%clear clc;clear all;%用Import Data导入lrc文件,设置'[',']',':'为分隔符,出现三个矩阵,分别改名为minuate、second、lyric [y,fs]=audioread('John ...

永胜县15641058706: matlab wav文件 -
庞邦肠胃: WAV为微软公司(Microsoft)开发的一种声音文件格式. WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种. 它符合RIFF(Resource Interchange File ...

永胜县15641058706: matlab wav文件
庞邦肠胃: 写wav文件用wavwrite(f,'name.wav') 前面参数表示采样频率,要跟你的程序里面的采样一致,比如说一首歌的时长为ts,有n个采样点,f=n/t 波动方程自己拟合嘛,例如要产生一个C大调的la/6, f=440; t=0:1/44.1e3:3; y=exp(t).*sin(2.*pi.*f.*t);%exp为指数衰减 不同频率代表不同音符,在时间轴上有序排列就产生一段美妙的音乐

永胜县15641058706: 在matlab中怎样实现对声音的导入,分析与处理??? -
庞邦肠胃: 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址).2)使用如下程序,做波形显示以及fft变换.[y,Fs,bits]=wavread('cricket.wav');%读出信号,采样率和采样位数.y=y(:,1);%我这...

永胜县15641058706: Matlab能导入wav格式的文件吗? -
庞邦肠胃: 不可以,matlab不支持mp3格式,只支持wav格式.

永胜县15641058706: Matlab 用sound命令听一段声音后,可以生成wav文件吗? -
庞邦肠胃: 用wavwrite

永胜县15641058706: 如何在matlab中读入一个wav声音文件 -
庞邦肠胃: 听WAV APE FLAC一般用FOOBAR2000 很专业的播放器 可以转换格式 占资源很小 非常好用

永胜县15641058706: 急求一个matlab的程序设计方案!
庞邦肠胃: windows自带录音工具 生成wav录音文件 在MATLAB中用函数:[y,f,b]=wavread('filname')读取 y就是采样的数据,f为采样频率,b为每个采样点的bit位数 滤波算法,网上一大堆,去程序员联合开发网注册一个号,下载例程 输出用wavwrite函数,写wav文件 用windows midea player播放 或者在程序中用sound函数回放

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网