滤波器优化算法里的一个随机数产生的问题
我现在在做一个FIR滤波器的系数量化后再进行优化的大作业,要求我们用local search算法进行优化,优化的对象是滤波器的离散冲击响应我现在得到的冲击响应的结果是a =
0.3842
0.2977
0.1064
-0.0480
-0.0791
-0.0171
0.0421
0.0403
-0.0033
-0.0329
-0.0251
再对其的小数点后位数进行量化后,我想用某种方法产生一个随机数池,然后每次迭代从里头随即选择length(a)个数代入一个事先写好的误差函数进行误差计算,如果误差小于前一次迭代的结果就将其接受为新的冲击响应.
现在的问题就是如何产生这个随机数池,我现在用rand函数来产生,结果是所有1000次迭代没产生一个被接受的冲击响应.
请各位大大指导.以下是我的code:
ai=rounding(a,7);%自己写的量化函数,小数点后给7个bits
Eq =ai.'*R*ai-2*p.'*ai+c;%滤波器的design error的函数,判定是否接受一个迭代结果就用这个函数
numberTrials=1000;%迭代次数
for j=1:numberTrials
%Propose a new set of ai as a trial set
newai= %就是这句不知道用什么好
newai=rounding(newai,7);
newEq=newai'*R*newai-2*p'*newai+c;
if newEq<Eq
ai=newai;
Eq=newEq;
end
end
请大家给点启发,谢谢了 再补充一点:
这个算法写出来只是为了作为和退火算法的一个比较才写的,所以并不要求有很高的效率和很好的效果,其实是不怎么合理的一个算法,但是就是不知道这个local search problem中的备选参数组怎么产生比较好.请熟悉这类问题的大大多指教,谢谢了
页:
[1]