📄 example6_7.m
字号:
%Step 1:计算幅值
function y = filtmin(a,w)
n = length(a);
y = cos(w'*(0:n-1)*2*pi)*a ;
%Step 2:调用优化函数
% 绘制初始系数的滤波器频响图
a0 = ones(15,1);
incr = 50;
w = linspace(0,0.5,incr);
y0 = filtmin(a0,w);
clf, plot(w,y0,'-:');
drawnow;
% 构造多目标逼近问题
w1 = linspace(0,0.1,incr) ;
w2 = linspace(0.15,0.5,incr);
w0 = [w1 w2];
goal = [1.0*ones(1,length(w1)) zeros(1,length(w2))];
weight = ones(size(goal));
% 调用 fgoalattain函数
options = optimset('GoalsExactAchieve',length(goal));
[a,fval,attainfactor,exitflag] = fgoalattain(@filtmin,...
a0,goal,weight,[],[],[],[],[],[],[],options,w0);
% 绘制优化系数的滤波器频响图
y = filtmin(a,w);
hold on, plot(w,y,'r')
axis([0 0.5 -3 3])
xlabel('Frequency (Hz)')
ylabel('Magnitude Response (dB)')
legend('initial', 'final')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -