返回信息流%读入音频文件
fid=fopen('F:\Mp3\test2.wav','r');
%前44字节为头信息
%status=fseek(fid,44,'bof');
a=fread(fid,'uint8');%读入所有字节
n=length(a);
per=input('Input percent:\n');
m=ceil(n*per);
d = randsrc(1, m, [0 1]);%产生随机序列即水印
for i=1:m
b(i)=a(i);
b(i)=bitset(b(i),1,d(i));%进行LSB嵌入水印
end
for j=m+1:n
c(j)=a(j);
end
e=[b,c]
wavwrite(e,'music_LSB_embeded.wav');
怎么运行都不出结果 也没什么错误啊[em9]
这是一条镜像帖。来源:北邮人论坛 / matlab / #3598同步于 2008/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
【求助】谁来帮我看看这段代码的问题 感激不尽啊
lavender
2008/5/9镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
用C来保存未修改的比特不对 C的维数是n
得到的e是m+n维的!
帮c(j) = a(j) 改为b(j) = a(j) 就行了 不用两个向量来区分保存!
e行向量要转置,才能和a的“形状”一样!
上面改了之后就能实现最低比特位嵌入了
这样就能输出了
但是最后的输出格式不知怎么弄! 输出的音频不对!呵呵 请教达人!
%读入音频文件
fid=fopen('F:\Mp3\test2.wav','r');
%前44字节为头信息
%status=fseek(fid,44,'bof');
a=fread(fid,'uint8');%读入所有字节
n=length(a);
per=input('Input percent:\n');
m=ceil(n*per);
d = randsrc(1, m, [0 1]);%产生随机序列即水印
for i=1:m
b(i)=a(i);
b(i)=bitset(b(i),1,d(i));%进行LSB嵌入水印
end
for j=m+1:n
b(j)=a(j);
end
e = b';
wavwrite(e,'F:\Mp3\music_LSB_embeded.wav');