我有一个问题。
在模拟simulink模型后,我需要使用MATLAB命令获取每行的信号尺寸。
我按照
获得了句柄line_h = find_system(gcs, 'FindAll', 'on','SearchDepth', 1, 'Type', 'Line')
然后我如何从线句中获取信号尺寸
**在格式菜单中检查'信号尺寸'时 - >端口/信号显示 模拟后,模型数量的信号尺寸将显示在非标量线上。 我需要使用MATLAB命令来获取它。
对不起我的英语技能
谢谢
答案 0 :(得分:3)
或者,您可以使用以下方法找到它们源自的每个块的信号尺寸和信号宽度:
get_param(<block_path>,'CompiledPortDimensions')
get_param(<block_path>,'CompiledPortWidths')
用每个感兴趣的块的相应块路径替换<block_path>
。必须先编译模型才能运行这些命令,但由于您在运行模型后指示这样做,这应该不是问题。
答案 1 :(得分:2)
您可以通过以下方式解决问题。
signalone
。 Limit data points to last
设置为1
,这样可以避免存储未使用的数据。logsout
logsout
现在评估此数据集如下:
% 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首选项中进行所有进一步的定义有一个列表来管理所有信号。
答案 2 :(得分:2)
如果find_system命令中有一组行句柄,则可以使用以下命令将块连接到信号。
hblkSrc = get_param(h(k),'SrcBlockHandle');
然后,您可以按照am304的建议使用get_param(hblkSrc,'CompiledPortDimensions')
来获取尺寸。