找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

Flux电机有限元分析教程西莫团购入口 | 奖励入口当当网购物入口 | 奖励入口欢迎使用!西莫论坛App开放下载Motor-CAD电机多物理域设计教材购买入口 | 奖励入口
★新会员论坛须知★《西莫电机技术》第40期发售火热进行中
Flux电机电磁阀有限元分析教程团购入口 | 奖励入口论坛微信公众平台欢迎入驻
西莫电机及相关产品供需交流群开放邀请★ 论坛VIP会员申请 ★Motor-CAD.MANATEE电磁热振动噪声教程 | 奖励入口西莫团队欢迎您的加盟!
宣传推广合作请联系QQ:25941174西莫电机论坛微信群正式开放Flux变压器与电抗器有限元分析团购入口 | 奖励入口西莫电机论坛技术版区QQ群汇总
查看: 2067|回复: 3

[求助] s函数的输出问题

[复制链接]

该用户从未签到

发表于 2008-12-9 20:33 | 显示全部楼层 |阅读模式 来自: 中国浙江台州

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我用s函数编了个异步电机定子磁链u-I模型,出现系统错误:Index exceeds matrix dimensions.
Error in ==> d:\MATLAB6p5\work\sflux.m
On line 10  ==>     sys=mdlOutputs(t,x,u);
不知如何解决,希望各位帮忙,谢谢

function [sys,x0,str,ts] = sflux(t,x,u,flag)

switch flag,
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;

  case 1,
    sys=mdlDerivatives(t,x,u);
  
  case 3,
    sys=mdlOutputs(t,x,u);
  
  case {2,4,9}
    sys=[];
  
  otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
% end sfuntmpl

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 4;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);

x0  = [];

str = [];

ts  = [0 0];
% end mdlInitializeSizes


% mdlDerivatives
% Return the derivatives for the continuous states.
%=======================================
%输入:u(1)=Uαs,u(2)=Uβs,u(3)=Iαs,u(4)=Iβs
%输出:sys(1)=vαs,sys(2)ψβ
%状态变量:x(1)=ψαs,x(2)=ψβs
% 电机参数:Rs,Pn

function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);
% end mdlDerivatives
%=============================
% mdlOutputs
% Return the block outputs.
%=============================
function sys=mdlOutputs(t,x,u)
sys(1)=x(1);
sys(2)=x(2);
% end mdlOutputs
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2009-2-13 13:42 | 显示全部楼层 来自: 中国北京
用sys=[x(1),x(2)];试试
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2009-3-9 18:17 | 显示全部楼层 来自: 中国黑龙江哈尔滨
function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);

在这个函数中,因为是连续的系统,所以sys(1)=u(1)-Rs*u(3);sys(2)=u(2)-Rs*u(4);是指它们的导数的值即dx(1)/dt=u(1)-Rs*u(3);  dx(2)/dt=u(2)-Rs*u(4);

你在这里没有弄明白S函数里面的东西  如果你要做的东西室和时间没关系的式子即
x(1)=u(1)-Rs*u(3);  x(2)=u(2)-Rs*u(4);
那么你就直接用
function sys=mdlOutputs(t,x,u)
x(1)=u(1)-Rs*u(3);  x(2)=u(2)-Rs*u(4);
sys(1)=x(1);
sys(2)=x(2);
就可以了 就不用调用mdlDerivatives(t,x,u)函数了

建议你再看看关于S函数的书

感觉你还是没弄明白s函数的真谛

评分

参与人数 1西莫币 +3 收起 理由
gellyares + 3 谢谢您的耐心回答!

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2012-3-2 07:59 | 显示全部楼层 来自: 中国山东青岛
function sys=mdlDerivatives(t,x,u)
Rs=0.1165;
sys(1)=u(1)-Rs*u(3);
sys(2)=u(2)-Rs*u(4);

在这个 ...
lfq19851126 发表于 2009-3-9 18:17

有关于PMSM DTC写的扩展卡尔曼滤波器S-function的例子么?传份给我!e-mail:394441579@qq.com
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

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

本版积分规则

西莫电机论坛微信公众平台欢迎您的关注!

QQ|Archiver|手机版|小黑屋|西莫电机圈 ( 浙ICP备10025899号-3|浙公网安备33010502012192号 )

GMT+8, 2025-2-19 06:43 , Processed in 0.111223 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表