Main Content

数値のテキストへの変換

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

string への変換

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

str = string(pi)
str = 
"3.1416"

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

A = [256 pi 8.9e-3];
str = string(A)
str = 1x3 string
    "256"    "3.141593"    "0.0089"

関数 compose を使用して、出力テキストの形式を指定できます。この関数は精度、フィールド幅および指数表記の書式指定子を受け入れます。

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

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

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

string への数値の追加

テキストと数値を組み合わせる最もシンプルな方法は、plus 演算子 (+) を使用することです。この演算子は、他のオペランドが string であれば自動的に数値を string に変換します。

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

X = linspace(0,2*pi);
Y = sin(X);
plot(X,Y)
freq = 1/(2*pi);
str = "Sine Wave, Frequency = " + freq + " Hz"
str = 
"Sine Wave, Frequency = 0.15915 Hz"
title(str)

Figure contains an axes object. The axes object with title Sine Wave, Frequency = 0.15915 Hz contains an object of type line.

場合によっては、既存のテキストが文字ベクトル、または文字ベクトルの cell 配列に格納されています。ただし、plus 演算子は、他のオペランドが string であれば自動的にこれらのデータ型も string に変換します。数値をこれらのデータ型と組み合わせるには、まず数値を string に変換してから、plus を使用してテキストを組み合わせます。

str = 'Sine Wave, Frequency = ' + string(freq) + {' Hz'}
str = 
"Sine Wave, Frequency = 0.15915 Hz"

文字コード

データに Unicode® 値を表す整数が含まれている場合は、関数 char を使用してそれらの値を対応する文字に変換します。この出力は文字ベクトルまたは文字配列です。

u = [77 65 84 76 65 66];
c = char(u)
c = 
'MATLAB'

Unicode 値を変換すると、テキストに特殊文字も含めることができます。たとえば、度記号の Unicode 値は 176 です。char(176) を string に追加するには、plus を使用します。

deg = char(176);
temp = 21;
str = "Temperature: " + temp + deg + "C"
str = 
"Temperature: 21°C"

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'

参考

| | | | |

関連するトピック