i am trying to display the dialog parameters of all blocks in a simulink model. But i am not getting the exact result. Can anyone help me in this?
7 次查看(过去 30 天)
显示 更早的评论
i am trying the following program to display the dialog parameters of all blocks using get_param. but this is not showing any result. is there any mistake in the below program?
modelname = 'model1';
load_system(modelname);
blocks = find_system(modelname, 'LookUnderMasks', 'all', 'FollowLinks', 'on', 'Type', 'Block');
% Display the dialog parameters of each block
disp('Block Dialog Parameters:');
for i = 1:numel(blocks)
blockPath = blocks{i};
disp('---');
disp(['Block Path: ', blockPath]);
dialogParams = get_param(blockPath, 'DialogParameters');
if isempty(dialogParams)
disp('No dialog parameters in the block.');
else
disp('Parameters:');
paramNames = fieldnames(dialogParams);
for j = 1:numel(paramNames)
paramName = paramNames{j};
paramValue = dialogParams.(paramName);
% Display the parameter name and value based on the data type
if isnumeric(paramValue)
disp([paramName, ' = ', num2str(paramValue)]);
elseif ischar(paramValue)
disp([paramName, ' = ', paramValue]);
else
disp([paramName, ' = ', class(paramValue)]);
end
end
end
end
5 个评论
Fangjun Jiang
2023-7-20
visdiff() is the one to use. Check the doc to see its output.
https://www.mathworks.com/help/simulink/model-comparison.html
采纳的回答
Fangjun Jiang
2023-7-19
编辑:Fangjun Jiang
2023-7-19
"paramValue" turns to be a struct. All its field values are struct, so your code ends up running this line for all iterations.
else
disp([paramName, ' = ', class(paramValue)]);
end
Using struct2cell(paramValue) and celldisp() might help but I wonder what is the purpose. There are so many dialog parameters for each block and usually there are many blocks in a model.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Schedule Model Components 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!