[c,l]=wavedec(s,3,'db1');
lev = 3;
ca3=appcoef(c,l,'db1',lev);
错误使用 appcoef:需要的 N 应为具有值 <= -1 的标量
不知道什么原因,有友友遇到过吗?
该回答引用ChatGPT4与博主@晓码自在合作编写:
这个错误是因为在调用 appcoef() 函数时,传入的最后一个参数 lev 的值不正确。
appcoef() 函数的原型是:
appcoef(c,l,filter,N)
其中,参数 N 应当是一个小于等于 -1 的整数。这表示需要重构构的层数。
而你调用该函数时,传入的 lev = 3。这是一个正整数,因此报错“需要的 N 应为具有值 <= -1 的标量”。
要修复这个错误,你需要传入一个小于等于 -1 的整数作为 N 参数。例如:
matlab
lev = -3; % 将 lev 改为 -3
ca3=appcoef(c,l,'db1',lev);
appcoef() 函数将使用小波重构,重构 lev 指定的层。lev = -3 表示重构从第 3 层开始的所有层。
所以修改后的完整代码如下:
matlab
[c,l]=wavedec(s,3,'db1'); % 小波分解,分解 3 层
lev = -3; % 需要重构的层数
ca3=appcoef(c,l,'db1',lev); % 小波重构
这段代码将对信号 s 进行 3 层小波分解,然后从第 3 层开始重构,实现小波去噪的目的。