根据异步电机的电压和电流输入,来辨识电机的定子电阻、转子电阻、定子漏感、转子漏感和互感,根据状态方程可得辨识值,再把参数辨识值代入状态方程中,得到电流的辨识值,把电流误差平方(输入电流值-电流辨识值)作为目标函数确定最终的函数,但是这个迭代过程如何用matlab实现呢?
离散化的状态方程如下图

matlab中的代码如下
sigma = 1-(L_m(i)^2)/(L_s(i)*L_r(i));
tau_r = L_r(i)/R_r(i);
B11 = -(R_s(i)/(sigma*L_s(i))+(1-sigma)/(sigma*tau_r));
B12 = L_m(i)/(sigma*tau_r*L_s(i)*L_r(i));
B13 = L_m(i)/(sigma*L_s(i)*L_r(i));
B14 = 1/(sigma*L_s(i));
B21 = L_m(i)/tau_r;
B22=-1/tau_r;
I_d(1) = I_d(1) + T*(B11*I_d(1)+B12*psi_rd(i,k)+B13*w_r*psi_rq(i,k)+B14*U_d);
I_q(1) = I_q(1) + T*(B11*I_q(1)+B12*psi_rq(i,k)-B13*w_r*psi_rd(i,k)+B14*U_q);
psi_rd(i,k+1) = psi_rd(i,k) + T*(B21*I_d(1)+B22*psi_rd(i,k)-w_r*psi_rq(i,k));
psi_rq(i,k+1) = psi_rq(i,k) + T*(B21*I_q(1)+B22*psi_rq(i,k)+w_r*psi_rd(i,k));
sigma_id = 1-(L_m(i)^2)/(L_s(i)*L_r(i));
tau_r_id = L_r(i)/R_r(i);
B11_id = -(R_s(i)/(sigma_id*L_s(i))+(1-sigma_id)/(sigma_id*tau_r_id));
B12_id = L_m(i)/(sigma_id*tau_r_id*L_s(i)*L_r(i));
B13_id = L_m(i)/(sigma_id*L_s(i)*L_r(i));
B14_id = 1/(sigma_id*L_s(i));
B21_id = L_m(i)/tau_r_id;
B22_id = -1/tau_r_id;
I_d_id(i,k+1) = I_d_id(i,k) + T*(B11_id*I_d_id(i,k)+B12_id*psi_rd_id(i,k)+B13_id*w_r*psi_rq_id(i,k)+B14_id*U_d);
I_q_id(i,k+1) = I_q_id(i,k) + T*(B11_id*I_q_id(i,k)+B12_id*psi_rq_id(i,k)-B13_id*w_r*psi_rd_id(i,k)+B14_id*U_q);
psi_rd_id(i,k+1) = psi_rd_id(i,k) + T*(B21_id*I_d_id(i,k)+B22_id*psi_rd_id(i,k)-w_r*psi_rq_id(i,k));
psi_rq_id(i,k+1) = psi_rq_id(i,k) + T*(B21_id*I_q_id(i,k)+B22_id*psi_rq_id(i,k)+w_r*psi_rd_id(i,k));
fitness = (sum(((I_d(1)-I_d_id(k)))^2+((I_q(1)-I_q_id(k))/)^2));