我的目标是将此函数调用到pso代码中以实现最小化。 实际上我将此代码调用到另一个程序(mfile),这里
v=0.1*x0; % initial velocity
for i=1:n
f0(i,1)=ofun(x0(i,:));
end
所以我应该怎么做,任何人都可以给我写一个代码,所以我可以删除这个问题。我的目标是使用ITEA代码最小化错误,我试图做,我试图找到每次代码运行时,e_t有最后更新的值,而不是e_t = 0.001。
我没有e_t
。如果我要初始化它,它将保持不变,但我需要在代码中更改其值。
其次,我收到此错误
使用时出错。*矩阵尺寸必须一致。
ofun(第10行)出错,f = sum(t'。* abs(e_t)* dt);
function f=ofun(x)
Kp= x(1);
Ki= x(2);
e_t;
d=0.001;
I_ref=-1.1:d:1;
dt = 0.01;
t = 0:dt:1;
e_t= I_ref - (Kp.*e_t +Ki.*sum(t'.*abs(e_t)*dt));
f = sum(t'.*abs(e_t)*dt); % line 10
我想为以下方程编写代码
error= I_ref - (kp * error + ki*(integration of error));
我想设置I-ref=-1.1-1.1;
答案 0 :(得分:1)
此处e_t
的大小与I_ref
e_t= I_ref - (Kp.*e_t +Ki.*sum(t'.*abs(e_t)*dt));
然后你想把它乘以t
f = sum(t'.*abs(e_t)*dt);
但t
与I_ref
的大小不同。 t
的长度为101,I_ref
的长度为2101。
答案 1 :(得分:1)
"矩阵尺寸必须同意"是第10行中出现的错误消息,因为矩阵t不能与e_t元素相乘。无论哪个矩阵较小,我都可以在其余部分添加一个矩阵,以便结果矩阵仍能够填充。你为什么要转置矩阵?祝你的项目好运!
if(gestureRecognize.state == UIGestureRecognizerState.Ended) {
let currentPivot = geometryNode.pivot
let currentPosition = geometryNode.position
let changePivot = SCNMatrix4Invert(SCNMatrix4MakeRotation(geometryNode.rotation.w, geometryNode.rotation.x, geometryNode.rotation.y, geometryNode.rotation.z))
geometryNode.pivot = SCNMatrix4Mult(changePivot, currentPivot)
geometryNode.transform = SCNMatrix4Identity
geometryNode.position = currentPosition
}