Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

数値のテキストへの変換

この例では、数値をテキストに変換し、より大きいテキストに追加する方法を説明します。たとえば、ラベルまたはタイトルをプロットに追加し、プロットの特性を説明する数値をラベルに含める場合などです。

数値は string または文字ベクトルに変換できます。10 進数、16 進数または 2 進数のテキスト表現に変換可能です。同じ手法により、datetime または duration の値もテキストに変換されます。

数値配列

ある数値を、それを表す string に変換するには、関数 string を使用します。

A = 3.1416
A = 3.1416
str = string(A)
str = 
"3.1416"

関数 string は、数値配列を、同じサイズの string 配列に変換します。

A = [256 3.1416 8.9e-3]
A = 1×3

  256.0000    3.1416    0.0089

str = string(A)
str = 1x3 string
    "256"    "3.1416"    "0.0089"

関数 char も数値を文字に変換しますが、string と同じ変換は行いません。代わりに、数値を個々の文字に変換します (たとえば、65 を文字 A に変換)。これは、浮動小数点数を、それらを表す string に変換する場合には推奨されません。

出力テキストの書式は、関数 composesprintf または num2str を使用して指定できます。これらの関数は書式指定子を受け入れるため、精度、フィールド幅、指数表現を指定できます。

str = compose("%9.7f",pi)
str = 
"3.1415927"

入力が数値配列の場合、compose は string 配列を返します。指数表現を使用して数値を表す string 配列を返します。

A = [256 3.1416 8.9e-3];
str = compose("%5.2e",A)
str = 1x3 string
    "2.56e+02"    "3.14e+00"    "8.90e-03"

関数 composesprintf および num2str は、異なるタイプの出力を返します。

  • compose は、入力数値配列と同じサイズの string 配列を返します。

  • sprintf は、入力が数値配列の場合であっても、文字ベクトルまたは string スカラーを返します。

  • num2str は常に文字ベクトルを返します。

ベスト プラクティスは、関数 string または compose を使用して値を変換することです。

  • 数値を変換するには string を使用します。

  • 出力テキストの書式も制御するには、compose を使用します。

  • 関数 char回避してください。数値が Unicode 値を表す整数として扱われ、対応する文字に変換されます。

変換された数値のテキストへの追加

これらの関数の典型的な用途は、数値をテキストに変換し、ファイル名やプロット上のラベルなど、他のテキストに追加できるようにすることです。

たとえば、正弦波をプロットし、プロットにタイトルを追加します。波の周波数を計算し、その値を表す string をプロットのタイトルに追加します。

X = linspace(0,2*pi);
Y = sin(X);
plot(X,Y)
xlabel("X")
ylabel("Y")
freq = string(1/(2*pi));
titleStr = append("Sine Wave, Frequency = ",freq," Hz")
titleStr = 
"Sine Wave, Frequency = 0.15915 Hz"
title(titleStr)

代わりに、plus 演算子を使用して string の末尾にテキストを追加することもできます。ただし、plus は文字ベクトルを数値配列のように扱います。

titleStr = "Sine Wave, Frequency = " + freq + " Hz"
titleStr = 
"Sine Wave, Frequency = 0.15915 Hz"

関数 append は、string 配列、文字ベクトル、および文字ベクトルの cell 配列にテキストを追加します。このため、ベスト プラクティスは関数 append を使用することです。

16 進数値と 2 進数値

テキストを使用するか、"リテラル" を使用することにより、コード内で 16 進数や 2 進数を表すことができます。推奨される表現方法は、リテラルとして記述することです。16 進数リテラルと 2 進数リテラルはそれぞれ、接頭辞 0x0b を使用して記述できます。ただし、そのような値は、関数 dec2hex または dec2bin を使用して表すと便利な場合があります。

たとえば、2 進数値でビットを設定します。リテラルを使用して 2 進数値を指定した場合、その数値は整数として保存されます。いずれかのビットを設定後、関数 dec2bin を使用して、新しい 2 進数値をテキストとして表示します。

register = 0b10010110
register = uint8
    150
register = bitset(register,5,0)
register = uint8
    134
binStr = dec2bin(register)
binStr = 
'10000110'

日付と時刻

MATLAB では、日付と時刻を保存するため、またそれらを数値として扱うために、datetimeduration のデータ型が提供されています。このような値を日付と時刻を表すテキストに変換するには、関数 string および char を使用します。

現在の日付と時刻を string として表します。

d = datetime('now')
d = datetime
   31-Jan-2020 22:39:10

str = string(d)
str = 
"31-Jan-2020 22:39:10"

duration 値の配列を表します。

D = seconds(1:5)
D = 1x5 duration
   1 sec   2 sec   3 sec   4 sec   5 sec

str = string(D)
str = 1x5 string
    "1 sec"    "2 sec"    "3 sec"    "4 sec"    "5 sec"

参考

| | | | | | | | | | | |

関連するトピック