problem with automized add_block destinations

hello,
I am using the add_block function to automatize the creation of a model in simulink. I have stored the block names in a column of a table data, i would like to add the blocks and automatically change their names according to the string data of the table. Here is the code:
nL = numel(data.X)
for i=1:nl
h=add_block('MyLibrary/BlockName' , ['MyModel/',data.Names(i)])
end
here is the error message:
"Invalid destination block specification."
data.Names is a string column of the table data. I have tried using another column of the table
for i=1:nl
h=add_block('MyLibrary/BlockName' , ['MyModel/',num2str(data.X(i))])
end
and this works perfectly! What i am missing? please help! Thank you all!

4 Kommentare

Ameer Hamza
Ameer Hamza am 8 Mai 2020
Bearbeitet: Ameer Hamza am 8 Mai 2020
Can you paste the output of
data.Names(1)
ans =
"BN3N_PDLN"
you are accessing to your stored created block names in strings via their index numbers. That is it.
ok, how can i fix this problem? thank you for answering me

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 8 Mai 2020
Bearbeitet: Ameer Hamza am 8 Mai 2020

1 Stimme

Change the line to this
h=add_block('MyLibrary/BlockName' , ['MyModel/',char(data.Names(i))])
%^ add char here

6 Kommentare

thank you very much Ameer!
I am glad to be of help.
The actual reason is that you were trying to use char() and string() datatype in the same vector. These are distinct data types in MATLAB and not interchangeable. The code in answer makes both variables of type 'char', which corrects the issue.
ok thank you for the explanation. doesn't the "num2str" function transform a number into a string? why that one was working and the use of an actual string data not?
The name is a bit misleading, but there is a good reason. Traditionally, MATLAB only used 'char' data type, and the terms char array and strings were used interchangeably. However, from R2016b, MATLAB officially introduced "string" data type. The function num2str existed since R2006a, and it outputs a char array. Historically the name num2str makes sense. But after the introduction of a separate "string" data type, this becomes a bit misleading. To maintain backward compatibility, the function still output char array.
now is all clear, thank you very much
I am glad to be of help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov am 8 Mai 2020

0 Stimmen

you are accessing to your stored created block names in strings via their index numbers. That is it.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by