我对Matlab-Simulink编程有疑问。
blocks = find_system(model_name, 'FindAll', 'on', 'LookUnderMasks', 'on', 'Type', 'block');
%replace all non alphanumerical characters with empty string
for i=1:length(blocks)
regexprep(get_param(blocks(i), 'Name'), '\W*', ''); %'[^a-zA-Z_0-9]'
end
这是我的代码。我想在块名中只允许使用字母数字字符和下划线。但如果我运行程序,名称将不会改变。 奇怪的是,如果我在for循环的行尾放出分号,在命令窗口中名称实际上正在改变......
我知道解决方案可能很简单,但我只是没有做对。 提前谢谢!
答案 0 :(得分:2)
当您致电regexprep(get_param(blocks(i), 'Name'), '\W*', '');
时,实际上是在替换无效字符,但是您没有分配替换后的字符串。
如果您修改了以下呼叫:
set_param(blocks(i), 'Name', regexprep(get_param(blocks(i), 'Name'), '\W*', ''));
将为块设置替换名称。
整个片段看起来像:
blocks = find_system(model_name, 'FindAll', 'on', 'LookUnderMasks', 'on', 'Type', 'block');
for i=1:length(blocks)
block = blocks(i);
set_param(block, 'Name', regexprep(get_param(block, 'Name'), '\W*', ''));
end