2017-03-23 3 views
2

Ich habe eine Frage bezüglich Matlab-Simulink Programmierung.Ersetzen Sie ungültige Zeichen in Simulink Blocknamen

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 

Das ist mein Code. Ich möchte nur alphanumerische Zeichen und Unterstriche in Blocknamen zulassen. Aber wenn ich das Programm laufe, ändern sich die Namen nicht. Die seltsame Sache ist, dass, wenn ich das Semikolon am Ende der Zeile in der for-Schleife, im Befehlsfenster die Namen tatsächlich ändern lassen ...

Ich weiß, die Lösung könnte einfach sein, aber ich Ich verstehe es einfach nicht richtig. Vielen Dank im Voraus!

Antwort

2

Wenn Sie regexprep(get_param(blocks(i), 'Name'), '\W*', ''); aufrufen, ersetzen Sie tatsächlich die ungültigen Zeichen, aber Sie ordnen die ersetzte Zeichenfolge nicht zu.

Wenn Sie den Anruf wie ändern:

set_param(blocks(i), 'Name', regexprep(get_param(blocks(i), 'Name'), '\W*', '')); 

die ersetzt Name für den Block festgelegt wird.

Das ganze Snippet könnte wie folgt aussehen:

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 
+0

Oh nein: D Was für ein Gehirn Verzögerung von meiner Seite .. Ja sicher i Set_Param brauchen! Danke, mein Herr! –