我有个问题。
在仿真了simulink模型后,我需要使用MATLAB命令得到每一行的信号维数。
我通过以下方法获得行句柄
line_h = find_system(gcs, 'FindAll', 'on','SearchDepth', 1, 'Type', 'Line')那我怎么才能从线手柄得到信号尺寸呢?
**当在格式菜单中选中“信号尺寸”时,->端口/信号在模拟后显示,一个模型的信号维数将显示在非标量线上。我需要用MATLAB命令得到它。
很抱歉我的英语技巧
谢谢
发布于 2013-10-04 12:54:33
如果find_system命令中有一组行句柄,则可以使用以下命令将块连接到信号。
hblkSrc = get_param(h(k),'SrcBlockHandle');然后,您可以按照get_param(hblkSrc,'CompiledPortDimensions')的建议使用am304来获取维度。
发布于 2013-10-04 10:06:00
或者,您可以使用以下方法找到它们所来自的每个块的信号尺寸和信号宽度:
get_param(<block_path>,'CompiledPortDimensions')
get_param(<block_path>,'CompiledPortWidths')将<block_path>替换为每个感兴趣的块的适当块路径。在运行这些命令之前,必须对模型进行编译,但是由于您指示在运行模型之后执行此操作,所以这不会是一个问题。
发布于 2013-10-04 09:23:54
你可以用以下方法来解决这个问题。
signalone。Limit data points to last设置为1,以避免存储未使用的数据。logsoutlogsout现在,按以下方式评估此数据集:
% returns data, if data limit is set to 1 it's a coloumn
% vector with just the last value
data = logsout.get('signalone').Values.Data现在你可以使用这个矢量的大小,你知道信号的维数。
[~,dim]=size(data)或者是一行:
[~,dim]=size(logsout.get('signalone').Values.Data)如果您有大量的信号,并且希望立即评估它们,请给出您的信号的方便输出名称,并使用一个循环来迭代包含所有信号名的字符串向量。
就像你说的,你想要“全部”的维度(你确定吗?)我认为,在每个信号属性中检查“启用信号日志”,并在Simulink首选项中做所有进一步的定义,这样做更方便,因为您有一个列表来管理所有信号。
https://stackoverflow.com/questions/19176680
复制相似问题