matlab读取数据 溢出,matlab读取400多兆的wav数据,内存溢出,如何解决

一样的问题 希望能对你有所提示

我作的处理是 先把一个大wav文件读取,再滤波,滤波后再合成一个新的wav文件 代码如下

clear all

close all

Fsize=4096;

Fs=192000;

Wn=30000;

bl=fir1(Fsize,Wn/(Fs/2),'low');

[wnamem,pnamem] = uigetfile('.wav','変調用可聴用音源');

wnamem = strrep(wnamem,'.wav','');

fnamem = strcat(pnamem,wnamem);

m2=0;

m4=0;

d=138;

div=2.0;

Ndiv=d/div;

for idiv=1:Ndiv;

if idiv==1;

N1m=1;

N2m=idiv*Fs*div+Fsize;

[Y,Fs,bit]=wavread(fnamem,[N1m N2m]);

disp('1ok');

ZeroDmy=zeros(Fsize,2);

Y=[ZeroDmy' Y']';

else

N1m=1+(idiv-1)*Fs*div-Fsize;

N2m=idiv*Fs*div+ Fsize;

[Y,Fs,bit]=wavread(fnamem,[N1m N2m]);

disp('2ok');

end

ncall=round(Fs*d);

x4 =filter(bl,1,Y);

x41=x4(Fsize+1:Fsize+Fs*div,1);

x42=x4(Fsize+1:Fsize+Fs*div,2);

Sx=zeros(2,Fs*div);

Sx(1,:)=x41';

Sx(2,:)=x42';

if idiv==1;

fndr=num2str(d);

fnFs=num2str(Fs);

sf = Fs;

mkdir('WAVDATA');

mkdir('WAVFIG');

fname = strcat(wnamem,'_fs',fnFs,'fc',num2str(Wn),'-',num2str(m2),...

'lownew',num2str(m4),'24bitST');

fid=fopen(strcat('WAVDATA\',fname,'.wav'),'wb');

bit=24;

fmtbyte=16;

byte=bit/8;

[ch,dl]=size(Sx);

fwrite(fid,hex2dec('52'),'uchar');

fwrite(fid,hex2dec('49'),'uchar');

fwrite(fid,hex2dec('46'),'uchar');

fwrite(fid,hex2dec('46'),'uchar');

fwrite(fid,ncall*ch*byte+36,'ulong');

fwrite(fid,hex2dec('57'),'uchar');

fwrite(fid,hex2dec('41'),'uchar');

fwrite(fid,hex2dec('56'),'uchar');

fwrite(fid,hex2dec('45'),'uchar');

fwrite(fid,hex2dec('66'),'uchar');

fwrite(fid,hex2dec('6D'),'uchar');

fwrite(fid,hex2dec('74'),'uchar');

fwrite(fid,hex2dec('20'),'uchar');

fwrite(fid,fmtbyte,'ulong');

fwrite(fid,1,'ushort');

fwrite(fid,ch,'ushort');

fwrite(fid,sf,'ulong');

fwrite(fid,sf*ch*byte,'ulong');

fwrite(fid,ch*byte,'ushort');

fwrite(fid,bit,'ushort');

fwrite(fid,hex2dec('64'),'uchar');

fwrite(fid,hex2dec('61'),'uchar');

fwrite(fid,hex2dec('74'),'uchar');

fwrite(fid,hex2dec('61'),'uchar');

fwrite(fid,ncall*ch*byte,'ulong');

end

max(abs(Sx(:)));

S=Sx*((2^bit)-2^(bit-1));

S=int32(S);

for y=1:dl;

for x=1:ch;

count = fwrite(fid,S(x,y),'bit24');

if y==dl;

disp(['書き込み',num2str(idiv),'回目OK']);

disp(['count=',num2str(count)]);

end

end

end

if idiv == Ndiv;

fclose(fid);

end

hold on;

newplot

text(20,-50,['Filename = ',fname],'FontSize',8);

text(20,-60,['Date = ',datestr(now,0)],'FontSize',8);

hold off;

set(gcf,'PaperPositionMode','auto')

set(gcf,'PaperType','A4')

bmppath = strcat('WAVFIG\',[fname,num2str(idiv)],'.png');

print('-dpng','-zbuffer',bmppath);

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值