close fd 死循环_【程序求助】程序貌似死循环了,一直显示BUSY!急求高手!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

关于FFT实现音频水印的!求助!

clc;clear;close all;

%读入作为水印的二维图像

FILE1='C:\Program Files\MATLAB71\work\matlab shuiyin\FFT\shuiyin.bmp';

w=imread(FILE1);

[M1,M2]=size(w);

%图像降维并bit化

W=reshape(w,1,M1*M2);

C=dec2bin(uint8(W),8);

%读入声音文件

FILE2='C:\Program Files\MATLAB71\work\matlab shuiyin\FFT\0.wav';

Y=wavread(FILE2);[X1,X2]=size(Y);

[y,Fs,bits]=wavread(FILE2);

leny=length(y);

subplot(211); plot(y);

axis([0 350000 -2 2]);

title('嵌入水印后音频波形图');

%对原始信号进行fft并分段

M=M1*M2;N=130;

De=fft(Y);

%水印嵌入

%delt为量化步长,fftam为傅立叶变换幅度,mod为幅值,residua为余数,fftam1为量化后幅度

delt=1;

for k=1:M

for m=10:10:80

fftam1=abs(De((k-1)*N+m,1));

fftang1=angle(De((k-1)*N+m,1));

mod1=fix(fftam1/delt);

residua=fftam1-(delt*mod1);

if mod1==0

if C(k,m/10)==1

fftam1=delt/2;

else

fftam1=3/2*delt;

end

else

if C(k,m/10)==1

if mod(mod1,2)==0

fftam1=(mod1+1/2)*delt;

else

if abs(residua)<=delt/2

fftam1=mod1*delt-1/2*delt;

else

fftam1=(mod1+3/2)*delt;

end

end

end

end

%ifft变换 把含有水印信息的fftam1代替fftam,其它系数不变,再进行ifft

De((k-1)*N+m,1)=fftam1.*exp(i.*fftang1);

De1=ifft(De);

end

end

%把逆变换后的数据存入音频文件,就得到了加入水印后的音频文件

wavwrite(De1,Fs,bits,'C:\Program Files\MATLAB71\work\matlab shuiyin\FFT\T1.wav');

subplot(212); plot(De1);

axis([0 350000 -2 2]);

title('嵌入水印后音频波形图');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值