如何在';中使用循环重复选项;从工作区';Simulink块是否在Simulink中包含Matlab数据?

如何在';中使用循环重复选项;从工作区';Simulink块是否在Simulink中包含Matlab数据?,matlab,simulink,Matlab,Simulink,假设我在Matlab工作区中有一个任意的nx1数组。如何将此数组作为源导入Simulink,并使用循环重复将数据扩展到其最终值之外 我知道Simulink中的“fromworkspace”块,并看到它有一个名为“循环重复”的选项。但是,如果我想使用nx1数组,我会收到错误消息“指定为工作区输入的变量无效”。要使用来自工作区的块,您的Matlab数据必须采用特定格式。例如,对于正弦波信号,您需要使用以下格式的struct: y.signals.values=sin(0:0.01:10*pi)';

假设我在Matlab工作区中有一个任意的nx1数组。如何将此数组作为源导入Simulink,并使用循环重复将数据扩展到其最终值之外


我知道Simulink中的“fromworkspace”块,并看到它有一个名为“循环重复”的选项。但是,如果我想使用nx1数组,我会收到错误消息“指定为工作区输入的变量无效”。

要使用来自工作区的
块,您的Matlab数据必须采用特定格式。例如,对于正弦波信号,您需要使用以下格式的
struct

y.signals.values=sin(0:0.01:10*pi)';
y.signals.dimensions=1;
y.time = [ ];
然后在“来自工作区的
”块中,确保为数据设置了正确的变量,取消选中“插值数据”并按如下方式设置循环重复

现在,您只需将数据传送到作用域,即可验证是否从工作区导入了正确的数据:

结果输出如下所示,并确认来自工作区的
块在重复原始数据直到10000s时按预期工作:


请不要忘记将答案标记为已接受,以便其他用户更容易找到答案。请注意,您可能需要小心数据结尾处发生的情况。在本例中,在重复时,您将得到sin(10*pi)后跟sin(0),这可能不是您想要的。对于这个特定的示例,您可能还希望使用
y.signals.values(end)=[]
删除端点,从而在重复时间使正弦波平滑,而不包括数据复制。(这可能是或可能不是真实数据的问题,但值得注意。)如果下面的答案解决了你的问题,请考虑。