[其他] 求助,matlab的simulink高手请进

现在要建立一个b'lo'c'k,要求功能如下
输入
1。数据:频率为f的离散discrete数值【1 2 4 2 5 6 8 、、、、、】(无穷)
2。触发信号
输出
向量vector,长度为n

运行模式:
当受到一个触发信号“rising edge”,他的动作为
1。vector内容清空
2。把触发信号“rising edge”以后的每个数据都存入vector,直到填满vector。(长度为n)
3。输出端口为一组向量vector。保持到下一个触发信号。

哪位大虾能指点一下,谢谢

对了,不能采用导出到workspace再处理数据的方法,因为这个block本身就是control loop中的一个环节,用来控制整个系统的。

例如
向量长度:3
触发信号:0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 、。。。
输入数据:1 2 3 1 2 5 6 7 8 3 1 9 4 5 6 7 。。。。

输出:      0 0 0 0 0 0 0 2 2 2 2 2 2 2 9 9 。。。。
               0 0 0 0 0 0 0 5 5 5 5 5 5 5 4 4 。 。 。
               0 0 0 0 0 0 0 6 6 6 6 6 6 6 5 5 。。。。
输出为3×1向量,vector

TOP

TOP

这个问题在hdl中是很容易的,不过在matlab不知道有没有相应的函数来处理trigger signal。如果matlab本身实在无法解决,可以用个笨办法,譬如用systemc来处理这个问题,然后用mex命令compile and link进入matlab,应该就可以了。

TOP

难以想象,我居然无法在matlab里面找到依靠上升沿触发信号采样的模块,把连续信号变成离散数值。
我能找到的模块是discrete目录下的zero-order hold。此block能把输入连续值按照采样时间离散化。但是如果我要求的采样间隔不固定咋办?譬如我给的时钟采样触发可以变化,那么采样如何控制block输出数据的速度呢?
请matlab高手指点一二。

TOP

原帖由 ymxt 于 2007-4-20 20:41 发表
这个问题在hdl中是很容易的,不过在matlab不知道有没有相应的函数来处理trigger signal。如果matlab本身实在无法解决,可以用个笨办法,譬如用systemc来处理这个问题,然后用mex命令compile and link进入matlab ...

matlab有trigger subsystem,但是实际应用表明,每当触发信号出现,subsystem保留此刻的其输出端口的值到下一个触发信号出现。但是!输出量依旧为连续。

TOP

TOP