Unable to unclude special characters in the value of a parameter

Hi Guys,
I am adding a block to a pre loaded simulink system. After adding the block i need to set a specific parameter to this block of the name P and value being a dynamic value. I am using:
p = add_block('uupilib/Get data from PI-point', [par, '/', nam], 'Position', pos);
set_param(p, 'P', ['Pin(', num2str(i), ')']);
However, when i'm trying to change this to:
p = add_block('uupilib/Get data from PI-point', [par, '/', nam], 'Position', pos);
set_param(p, 'P', Pin(i).PITag);
It says "Unexpected MATLAB expression". From what i've discovered it seems that the value Pin(i).PITag contains special characters such as semi colon(;) and spaces( ). When I replace this entire string with a simple 'abc', it works again. Is there a way that i can ask MATLAB to escape these special characters?
This statement is in a loop and i here is the loop counter variable.

Réponses (1)

A Jenkins
A Jenkins le 19 Jan 2015
Modifié(e) : A Jenkins le 19 Jan 2015
It used to be called genvarname().
It looks like in newer versions you are supposed to use matlab.lang.makevalidname().
I suppose you could also use regular expressions to escape only the characters you don't want.

2 commentaires

Well, i went through makevalidname and i guess i specifically need the function which replaces special characters with their hexadecimal representations. But I need to decode this string when i'll be reading the block parameter from the other functions. How do i do that?
For the built in examples of how to do the replacement yourself, type doc regexprep.
There are also some people here who enjoy these puzzles for some strange reason. I bet if you put an example up (before and after of what you would like the string to be), someone would write the regular expression for you.

Connectez-vous pour commenter.

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by