string を使用したテキスト情報の管理
string を使用してテキスト データを作成すると、チャートの動作を制御して読みやすいテキストを出力できます。
Stateflow での string の作成
Stateflow® における "string" とは、二重引用符 ("
..."
) で囲まれたテキストです。さらに、C をアクション言語として使用するチャートでは、一重引用符 ('
...'
) で囲まれた string がサポートされています。たとえば、次のチャートは、string データを入力として取ります。その入力に基づいて、チャートは対応する string 出力を生成します。
string のシンボルを指定するには、まず [プロパティ インスペクター] を開きます。[シンボル] ペインで、string に変換するデータを選択します。[プロパティ インスペクター] で [型] を [string]
に設定します。Stateflow は、このデータ型にメモリ領域を動的に割り当てます。
string による計算
Stateflow チャートで string データを操作するには、次の表の演算子を使用します。
目的 | MATLAB アクション言語の関数 | 例 | C アクション言語の関数 | 例 |
---|---|---|---|---|
2 つの string の連結 | plus | h = "Hello," w = " world!" x = plus(h,w) | strcat | s1 = "State"; s2 = "flow"; dest = strcat(s1,s2); |
string の長さの判定 | strlength | h = "Hello, world!"
x = strlength(h) | strlen | L = strlen("Stateflow"); |
string から double への変換 | str2double | X = str2double("-12.345"); | str2double | X = str2double("-12.345"); |
数値、boolean、列挙データから string への変換 | string | a = [1307]; str = string(a) | tostring | dest = tostring(RED); |
string の切り捨て
最大文字数の string データを作成することもできます。バッファー サイズが n
文字の string としてシンボルを指定するには、そのシンボルの [型] フィールドを stringtype(
に設定します。string のテキストをバッファーより短くすることはできますが、string の長さがバッファー サイズを超えると、string 内のテキストは切り捨てられます。たとえば、前述のチャート内のシンボル n
)output
の [型] プロパティが stringtype(10)
である場合、ステート On
内の値は切り捨てられて "All system"
になります。
[string 打ち切りチェック] パラメーターを有効にすることで、string が stringtype(n)
で指定された長さを超えたときにシミュレーションを停止するか、警告を出力するかを選択できます。
string 打ち切りチェック | 説明 |
---|---|
エラー | シミュレーションはエラーで停止します。 |
警告 | string は切り捨てられます。シミュレーションは警告を表示して続行します。 |
なし | string は切り捨てられます。シミュレーションは、エラーや警告を表示せずに続行します。 |
メモ
C や C++ とは異なり、Stateflow は、エスケープ シーケンスをリテラル文字として解釈します。たとえば、string "\n"
に含まれている文字はバックスラッシュと n
の 2 文字であり、1 つの改行文字ではありません。
アクション言語として MATLAB と C を使用するチャートの違い
アクション言語として C を使用するチャートと MATLAB® を使用するチャートの主な違いには、以下があります。
MATLAB をアクション言語として使用するチャートは、二重引用符で囲まれた string のみをサポートします。C をアクション言語として使用するチャートでは、string に二重引用符または一重引用符を使用できます。
string が一致した場合、MATLAB をアクション言語として使用するチャートの
strcmp
は1 (true)
を返します。C をアクション言語として使用するチャートのstrcmp
は0
を返します。MATLAB をアクション言語として使用するチャートの
strcmp
は boolean を返します。C をアクション言語として使用するチャートのstrcmp
は double を返します。string の長さを返すには、アクション言語として MATLAB を使用するチャートでは
strlength
を使用し、C を使用するチャートではstrlen
を使用します。string を連結するには、アクション言語として MATLAB を使用するチャートでは
+
を使用し、C を使用するチャートではstrcat
を使用します。MATLAB をアクション言語として使用するチャートでは、
str2double
を使用すると出力変数が強制的に実数/複素数になります。MATLAB をアクション言語として使用するチャートは、
>
、<
、==
などの比較演算をすべてサポートします。
制限
パラメーター データが string であってはなりません。
アクション言語として MATLAB を使用するチャートには、以下の制限があります。
定数データが string であってはなりません。
以下の演算子はサポートされません。
strcat
extract
extractBetween
sscanf
compose
append
pad
count
sfprint
構造体には以下の演算子のみを使用できます。
isstring
strcmp
string
strlength
Stateflow の構造体の詳細については、Stateflow 構造体を介したバス信号へのアクセスを参照してください。
参考
ascii2str
| str2ascii
| str2double
| strcat
| strcmp
| strcpy
| strlen
| substr
| tostring