|
楼主 |
发表于 2008-1-16 22:28
|
显示全部楼层
谢谢大家
谢谢楼上,你们的方法确实很好,花主任的方法我用了,这里具体说下吧,我要做音频文件的水印嵌入和提取:
我是先载入了一个声音文件
[a,fs,bits]=wavread('D:\matlab\work\sound333333.wav');
然后运用小波变换DWT算法进行分解
[c,l]=wavedec(a,3,'haar'); % returns the wavelet decomposition of the signal at
level 3, using 'haar'
再求近似分量的系数
ca3=appcoef(c,l,3,'haar'); % computes the approximation coefficients at level 3 using the wavelet decomposition structure [C,L]
以上都不是关键,这里再要问的是,我得到的这些系数,用matlab显示出来是:
-0.0269
-0.0084
0.0114
0.0178
0.0223
0.0766
0.0678
0.0061
0.0526
0.0215
-0.0349
-0.0146
0.0319
0.0776
.
.
.
.
.
一长串数字,现在我要求 这些数字取绝对值后,不为0的最小值
子程序我用的花主任的:
function absmin
a=[-1 2 0; 5 0 0];
b=sort(abs(a(:)),'ascend');
c=b(b>0);absmin=c(1)
经过调试没问题,单独debug结果是:
absmin =
1
主程序里我调用就是简单的:
q=absmin(ca3);
但最后就会显示这里调用有错误:
??? Error using ==> absmin
Too many input arguments.
Error in ==> watermarking at 14
q=absmin(ca3);
是那些系数不符合子程序的格式要求吗???麻烦大家和2位主任了 |
|