pcm格式文件matlab读取|MATLAB怎么读取音频怎么写编程要完整的

pcm格式文件matlab读取|MATLAB怎么读取音频怎么写编程要完整的的第1张示图

⑴ MATLAB怎么读取音频,怎么写编程,要完整的

(MP3格式)

⑵ MATLAB pcm文件

从菜单栏中的InportData…项读取一下试试

⑶ Matlab如何读取wav文件,为什么wavread不行

waveread函数只支持脉冲编码调制(PCM)数据格式,所以一般的wav格式matlab是不认的,所以需要用一些格式转换软件,自定义一下输出格式,改为PCM输出即可。然后就是wavread的文件路径必须是完整路径。

⑷ MATLAB中如何实现wav文件的二进制读取(类似于读取PCM文件)

用fopen+fread同样可以打开wav文件,同打开pcm文件的方法一样。不同的是,wav文件中有头文件,需要跳过22个头文件,且是两字节的。直接用fread来移动文件指针即可,eg,fread( fin,22*2,'int16')

⑸ 如何用matlab生成nist test可读的文件

1、用CooEdit录制声音,可以选择采样率为96kHz,单声道。录制声音长度约为10s,然后存储文件为WindowsPCMwav文件格式。文件名最好包括进入测试条件。测试多组数据,将其保存在同一个文件夹中,便于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);%求取表格行数,即文件个数forN=1:1:fnumberfilename=char(fnames(N,1));%将cell转换为stringfilename=strcat(path,filename);%校正文件路径[Y,Fs]=wavread(filename,Num);%读取当前文件前65536个点Ydata(N,:)=Y;%记录数据Fdata(N,:)=Fs;%记录采样率end4、对数据做FFT运算,并绘制其频谱图。forN=1:1:fnumberyy=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');%绘制频谱gridon;axis([4003000-2070]);end5、调整修饰绘图,并存储。下面是用到的一些命令。set(gcf,'Position',[200200350250]);%设置绘图的大小tt=strcat(Freq(N,:),',',Sqrt(N,:),',',Modindex(N,:));title(tt);%设置绘图标题legend('m=1.0');xlabel('Frequency(Hz)','FontSize',14,'FontName','TimesNewRoman');%设置x坐标轴标注字体ylabel('Amplitude(dB)','FontSize',14,'FontName','TimesNewRoman');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工具栏的图片工具,第一个工具即为插入快捷键。这样会更方便快捷。

⑹ 如何将Raw PCM file 用MATLAB转换成wav文件

$arr = json_decode ($json, true);echo "<pre>";print_r($arr);echo "</pre>";$values = array(); foreach ($arr as $k => $v) {$values[] = "'" . $v['openid'] . "', " . $v['opercode'] . ", " . $v['text'] . "," . $v['time'] . "," . $v['worker'] . "";}

⑺ matlab录制wav文件后转pcm,为什么再读取pcm文件自动降调

建议尝试把line17括号里的“int16”改成“int32”,可能位数不够导致数据被压缩。

⑻ 懂PCM的Matlab程序的高手帮一下

function [f] = ecode(yn)%本函数实现国际通用的PCM量化A律13折线特性近似,x为输入的序列,变换后的值赋给序列yx = yn;ypcm=[];x=x/max(x); %求出序列的最大值,同时归一化s=sign(x); %求得每一序列值的符号x=abs(x); %求序列的绝对值for i=1:length(x); %直接将序列的绝对值量化 if((x(i)>=0)&&(x(i)<1/64))%序列值位于第1和第2折线 ypcm(i)=16*x(i); else if(x(i)>=1/64&&x(i)<1/32) %序列值位于第3折线 ypcm(i)=8*x(i)+1/8; else if(x(i)>=1/32&&x(i)<1/16) %序列值位于第4折线 ypcm(i)=4*x(i)+2/8; else if(x(i)>=1/16&&x(i)<1/8) %序列值位于第5折线 ypcm(i)=2*x(i)+3/8; else if(x(i)>=1/8&&x(i)<1/4) %序列值位于第6折线 ypcm(i)=x(i)+4/8; else if(x(i)>=1/4&&x(i)<1/2) %序列值位于第7折线 ypcm(i)=1/2*x(i)+5/8; else if(x(i)>=1/2&&x(i)<=1) %序列值位于第8折线 ypcm(i)=1/4*x(i)+6/8; end; end; end; end; end; end; end;end;ypcm= s.*ypcm; %重新将符号带回序列中 %本函数实现将输入的值(已量化好)编码,输入y为量化后的序列,其值应在1到1之间f=zeros(length(ypcm),8); %定义一个二维数组,每一行的8位代表了对应的输入值s=sign(ypcm); %得到输入序列的符号,确定编码的首位ypcm=ypcm*128; %将序列值扩展到0到128之间,便于编码ypcm=fix(ypcm); %将计算值取整ypcm=abs(ypcm); %只计算绝对值的编码for i=1:length(ypcm) if(ypcm(i)==128) %如果输入为1,得到128,避免出现编码位为2的错误 ypcm(i)=127.999; %将其值近似为127.999 end;end;for i=1:length(ypcm) %下面的循环是将十进制转换为二进制数 for j=6:-1:0 %分别计算序列值除以从64到1的数的商 f(i,8-j)=fix(ypcm(i)/(2^j)); ypcm(i)=mod(ypcm(i),(2^j)); end;end;for i=1:length(ypcm) if(s(i)==-1) %输入值是负数 f(i,1)=0; %首位取0 else f(i,1)=1; %输入值是正数,首位取1 end;end; %显示编码结果

未经允许不得转载:山九号 » pcm格式文件matlab读取|MATLAB怎么读取音频怎么写编程要完整的

赞 (0)