Using array of strings in TLC files

Hi,
I'm trying to use an array of predefined strings in a TLC file and index this array using an input parameter.
Let's say I have the following array of strings:
names = ["Jane" "John" "Jeff"]
I'd like use something like the following:
myFunction(%<names[LibBlockInputSignal(0, "", "", 1)]>, 100)
which should output myFunction("John", 100);
Any idea how to do that? Mainly, how to build up the array and select/echo the desired string?
Many thanks in advance!

1 件のコメント

Oleg Komarov
Oleg Komarov 2011 年 7 月 11 日
Not clear what you want to do. Which criteria you use to select the name.

サインインしてコメントする。

 採用された回答

Kaustubha Govind
Kaustubha Govind 2011 年 7 月 11 日

2 投票

Try:
%assign names = ["Jane", "John", "Jeff"]
myFunction(%<names[1]>, 100)
Although it's not clear what you want to do with LibBlockInputSignal(0, "", "", 1), because this would generate code which could replace LibBlockInputSignal(0, "", "", 1) with something like mymodel_U.In1[0] (as an example). Therefore something like:
myFunction(%<names[LibBlockInputSignal(0, "", "", 1)]>, 100)
Would produce an error in TLC because LibBlockInputSignal(0, "", "", 1) is not a TLC constant. If you really want to index into a string array based on the input value, you need to generate the string array in the code. For example:
%assign u = LibBlockInputSignal(0, "", "", 1)
char *names[] = {"Jane" "John" "Jeff"};
if (%<u> >= 0 && %<u> < 3) {
myFunction(names[%<u>], 100);
}
Full disclaimer: I haven't tested the above code in an S-function, so you might need to tweak it further.

2 件のコメント

Macko
Macko 2011 年 7 月 12 日
Thanks a lot! That looks really good!
I will give this a try and let you know the outcome.
Macko
Macko 2011 年 7 月 14 日
It works! Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by