【发布时间】:2015-08-29 18:47:57
【问题描述】:
无法在 Matlab 中编写内联聚合函数。
X1、X2 是数组变量。 mb 和 nb 是 BUS DATA 的大小。
V是电压函数,delta是角度。
% objf=inline('sum(V(mb)^2+V(nb)^2-2*V(mb)*V(nb)*cos(delta(mb)-delta(nb)))','mb','nb');
% old code running
objf=inline('4*x1^2-2.1*x1^4+(x1^6)/3+x1*x2-4*x2^2+4*x2^4','x1','x2');**
*使用 inlineeval 时出错(第 15 行) 内联表达式错误 ==> sum(V(mb).^2+V(nb).^2-2.*V(mb).*V(nb).cos(delta(mb)-delta (注))) 'double' 类型的输入参数的未定义函数 'V'。 内联/子引用错误(第 24 行) INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr); deeee 中的错误(第 48 行) fx=objf(x(:,1),x(:,2));
其中变量 aer 定义如下..
busdata = bus; % ARRAY OF INPUTs
j=sqrt(-1);
P=[];Q=[];
nb=busdata(:,1);
kb=busdata(:,2);Vm=busdata(:,3);deltad=busdata(:, 4);Pd=0.8*busdata(:,5)/basemva;Qd=.8*busdata(:,6)/basemva;
Pg=busdata(:,7)/basemva;Qg=busdata(:,8)/basemva;Bsh=busdata(:,11);Qmin=busdata(:,9)/basemva;Qmax=busdata(:,10)/basemva;
G=real(Ybus);B=imag(Ybus);slb=find(kb==1);pv=find(kb==2);pq=find(kb==0);pvq=find(kb~=1);npv=length(pv);
npq=length(pq);npvq=length(pvq);nbus=max(nb);
delta(nb) = pi/180*deltad(nb);
V(nb) = Vm(nb).*(cos(delta(nb))+j*sin(delta(nb)))';
P(nb)=(Pg(nb)-Pd(nb));
flag=0;
【问题讨论】:
-
欢迎来到 SO!当您说“无法写入”时,您会收到任何错误消息吗?
-
文档明确指出"inline will be removed in a future release. Use Anonymous Functions instead."。在这里使用内联的任何具体原因?
标签: windows matlab compilation system aggregate