假设我在小波分解后得到了数百个小波系数..现在我想将最小的10%系数归零 我怎么能在matlab中做到这一点?
答案 0 :(得分:2)
如果你的小波系数在矢量或矩阵c
中,首先让我们从最小的元素中排序
[sc ind]=sort(c(:));
然后将前10%归零:
c(ind(1:round(numel(sc)*0.1)))=0;
此代码适用于1D和2D情况(实际上这也适用于第N维情况)
答案 1 :(得分:1)
您可以先使用mean()命令获取矢量/矩阵的所有元素的平均值。
“帮助意味着”会更好地解释它的作用比你更好。然后你可以运行一个for循环来运行整个数组。在那里,你有一个看起来像
的if语句如果矩阵(i,j)< =(您先前计算的平均值)/ 5
矩阵(i,j)= 0
端
这是我第一次在StackExchange上回复,所以如果我犯了任何可怕的错误,请告诉我。
答案 2 :(得分:0)
你可以组合'sort','floor'和'length'命令;假设您的数字存储在向量'a'中:
b=sort(a);
b=b(1,floor(length(a)/10))=0;
如果你的订购标准忽略了这个标志,你可能需要/需要在第一行之前调用'abs(b)'。