如下图:
for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式条件表达式末尾循环体){中间循环体;}。
注意事项:
1、for循环中的变量可以是一个也可以是多个。
2、for循环中语句可以为语句体, 语句体外加大括号"{}"将参加循环的语句括起来。
3、for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以缺省成只剩下“;”的空语句。
% 打开并以UNIT8的格式读入音频文件fid=fopen('33.wav','rb')
a=fread(fid,inf,'uchar')
% 获取音频数据长度(44可能是wav文件头,不太确定),关闭文件
n=length(a)-44
fclose(fid)
% 读入图像文件
io=imread('kkk.bmp')
% 获取图像文件的行列数(高和宽)
[row col]=size(io)
% 把图像数据转换为向量
wi=io(:)
% 如果图像像素数比音频数据多,则报错退出
if row*col>n
error('文件太小')
end
% 加水印后的音频数据初始值设为原音频数据
watermarkedaudio=a
% 水印长度
watermarklength=row*col
% 通过循环对音频数据设置水印,即把最高位设为对应的图像数据(这里看起来也有问题:1、bitset的第3个参数原则上只能是0或1,所有非0值都被视为1——图像是二值的?2、水印长度watermarklength没用上)
for k=1:row*col
watermarkedaudio(44+k)=bitset(watermarkedaudio(44+k),1,wi(k))
end
% 画图比较加水印前后的音频数据
figure
subplot(2,1,1)plot(a)
subplot(2,1,2)plot(watermarkedaudio)
% 保存加水印之后的音频数据
fid = fopen('2.wav', 'wb')
fwrite(fid,watermarkedaudio,'uchar')
fclose(fid)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)