⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fig6_6.m

📁 斯坦福大学Grant和Boyd教授等开发的凸优化matlab工具箱
💻 M
字号:
% Example 6.3: Optimal input design% Section 6.3.2, Figure 6.6% Boyd & Vandenberghe "Convex Optimization"% Original by Lieven Vandenberghe% Adapted for CVX by Joelle Skaf - 09/26/05%% Consider a dynamical system with scalar input sequence u(0),u(1),...,u(N)% and scalar output sequence y(0),y(1),...,y(N) related by the convolution% y = h*u where h = [h(0),h(1),...,h(N)] is the impulse response.% Our goal is to choose an input sequence to minimize the weighted sum:%           minimize J_track + delta*J_der + eta*J_mag% where J_track = 1/(N+1) sum_{t=0}^N (y(t) - y_des(t))^2%       J_mag   = 1/(N+1) sum_{t=0}^N u(t)^2%       J_der   = 1/N sum_{t=0}^{N-1} (u(t+1) - u(t))^2cvx_quiet(true);% Input datam = 201;  n = 201;  N=200;t = [0:m-1]';h = (1/9)*((.9).^t) .* (1 - 0.4*cos(2*t));   % sum(h) is approx. 1H = toeplitz(h', [h(1) zeros(1,n-1)]);% m1 = round(m/6); m2 = round(m/5); m3 = round(m/5);  m4 = m-m1-m2-m3;m1 = round(m/5); m2 = round(m/4); m3 = round(m/4);  m4 = m-m1-m2-m3;y_des = [zeros(m1,1); ones(m2,1); -ones(m3,1); zeros(m4,1)];D = [-eye(n-1) zeros(n-1,1)];D = D + [zeros(n-1,1) eye(n-1)];delta = [0 0 0.3];eta = [0.005 0.05 0.05];disp('Finding the optimal input for ');for i = 1:length(delta)    disp(['* delta = ' num2str(delta(i)) ' and eta = ' num2str(eta(i))]);    cvx_begin    variable u(N+1)    minimize ( square_pos(norm(H*u - y_des))/(N+1) + ...               eta(i)*square_pos(norm(u))/(N+1) + ...               delta(i)*square_pos(norm(D*u))/N )    cvx_end    switch(i)        case 1            figure(1); plot(t,u); xlabel('t'); ylabel('u(t)');            title(['Input u(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg1u.eps            figure(2); plot(t,H*u); xlabel('t'); ylabel('y(t)');            title(['Output y(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg1y.eps        case 2            figure(3); plot(t,u); xlabel('t'); ylabel('u(t)');            title(['Input u(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg2u.eps            figure(4); plot(t,H*u); xlabel('t'); ylabel('y(t)');            title(['Output y(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg2y.eps        case 3            figure(5); plot(t,u); xlabel('t'); ylabel('u(t)');            title(['Input u(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg3u.eps            figure(6); plot(t,H*u); xlabel('t'); ylabel('y(t)');            title(['Output y(t) for \delta = ' num2str(delta(i)) ' and  \eta = ' num2str(eta(i))]);            %         print -deps smoothreg3y.eps    endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -