MATLAB出错

[复制链接]
查看11 | 回复3 | 2010-9-9 20:08:26 | 显示全部楼层 |阅读模式
M函数如下
% 编写异步发电机dqo坐标下的局部数学模型M—函数
% 将该M—函数定义为asy_ge,其中x为电流(id1,iq1,id2,iq2)的一阶导数,y=(id1,iq1,id2,iq2,ud1,uq1,w)
function x=asy_ge(y)
% 下面输入电机基本数据:
LR0=0.0013;LS0=0.0014;RR=0.146;RS=0.144;
% 下面计算互感LM与激磁电流之间的关系(考虑磁路饱和作用):
mm=((y(1)+y(3))^2+(y(2)+y(4))^2)^.5
LM=(0.2209268+0.1829319*mm-0.1096410*mm^2+0.0257472*mm^3-0.0028836*mm^4);
LR=LM+LR0;LS=LM+LS0;
%下面计算系数矩阵A和B
A=1/(LS*LR-LM^2)*[-RS*LR,
y(7)*LM^2, RR*LM,
y(7)*LM*LR;

-y(7)*LM^2, -RS*LR,
-y(7)*LM*LR,RR*LM;

RS*LM,
-y(7)*LM*LS, -RR*LS,
-y(7)*LS*LR;

y(7)*LM*LS, RS*LM,
y(7)*LS*LR, -RR*LS];
B=1/(LS*LR-LM^2)*[LR,0;0,LR;-LM,0;0,-LM];
%下面计算x与y之间关系
x=[(A*[y(1);y(2);y(3);y(4)]+B*[y(5);y(6)])];
运行后报错:
??? Input argument "y" is undefined.
Error in ==> asy_ge at 7
mm=((y(1)+y(3))^2+(y(2)+y(4))^2)^.5
不知什么原因
是在editor里按F5单独运行 asy_ge 函数时报错??? Input argument "y" is undefined.
Error in ==> asy_ge at 7
mm=((y(1)+y(3))^2+(y(2)+y(4))^2)^.5
不是仿真时报 不知什么原因

回复

使用道具 举报

千问 | 2010-9-9 20:08:26 | 显示全部楼层
你调用函数asy_ge的时候忘记加上参数了吧?把调用的那一行也贴上来看看就知道了。 按F5单独运行一个有参数的函数是错误的做法,因为此时你的参数全都属于未定义状态,没有值。正确的做法是在命令窗口输入命令给y赋值,然后再输入asy_ge(y)运行。
回复

使用道具 举报

千问 | 2010-9-9 20:08:26 | 显示全部楼层
运行前要先对y定义并赋初值
回复

使用道具 举报

千问 | 2010-9-9 20:08:26 | 显示全部楼层
好深奥啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行