声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1445|回复: 4

[控制系统类] 修改過後的S函數 for LMS算法

[复制链接]
发表于 2009-1-2 14:31 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?我要加入

x
重新編寫以後放入Simulink內已經可以執行了
不過y的參數會一直為0,並不會更新
請問問題是出自哪邊呢??


                               
登录/注册后可看大图


%S-function for LMS block

function [sys,x0,str,ts] = LMS(t,x,u,flag,w,mu,L)
L=9;
w=zeros(L,1);
x=zeros(L,1);
mu=0.05;
y=0;
d=0;
e=0;

switch flag,
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;
  case 1,
    sys=mdlDerivatives(t,x,u);
  case 2,
    sys=mdlUpdate(t,x,u,w,mu,L);
  case 3,
    sys=mdlOutputs(t,x,u,w,d,mu,L,y,e);
  case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);
  case 9,
    sys=mdlTerminate(t,x,u);
  otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;                 
sizes.NumDiscStates  = 9;  
sizes.NumOutputs     = 1;                 
sizes.NumInputs      = 2;                 
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;                 
sys = simsizes(sizes);
x0  = zeros(9,1);         
str = [];
ts  = [1/10000 0];


function sys=mdlDerivatives(t,x,u)        
sys = [];

function sys=mdlUpdate(t,x,u,w,mu,L,y,e)
x(L:2) = x(L-1:1);
x(1)=u(2);
d=u(1);
%e=u(1)
y=w'*x
e=d-y
sys= w+mu*x*e;              % w(k) = w(0) + mu*x*e
w=sys

function sys=mdlOutputs(t,x,u,w,d,mu,L,y,e)

sys = y;

function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;   
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)         
sys = [];
% end mdlTerminate
回复
分享到:

使用道具 举报

发表于 2009-1-3 10:58 | 显示全部楼层
因为y没有付值
 楼主| 发表于 2009-1-5 07:10 | 显示全部楼层

回复 沙发 yufeng 的帖子

不太懂付值的意思.在最前面定義y=0是指初始值為0.是這邊的問題嗎?
发表于 2009-1-5 08:50 | 显示全部楼层
你定义了y=0 那么只要调用程序y就=0 所以最后输出为0 你先看看s函数 有些问题你没有搞明白 首先确定你要实现的功能 是否要用s函数 另外要搞清s函数是干什么用的
 楼主| 发表于 2009-1-6 09:43 | 显示全部楼层
感謝指教,若修正完成會再來回報
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 03:30 , Processed in 0.049754 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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