セルを倍精度実数に変換するには?

4 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 13 Nov 2024 at 0:00
Answered: MathWorks Support Team on 13 Nov 2024 at 4:04

例えば、aが以下のような11x1のセル配列であるとします。

a =

'0.000000'
'1.000000'
'2.000000'
'3.000000'
'4.000000'
'5.000000'
'6.000000'
'7.000000'
'8.000000'
'9.000000'
'10.000000'
これを倍精度実数に変換したいと考えています。b=cell2mat(a)を試みたところ、以下のエラーが発生しました:

??? Error
using ==> cat
CAT
arguments dimensions are not consistent.
Error
in ==> cell2mat at 85
m{n} = cat(1,c{:,n});
ただし、ループと2段階の変換を使えば回避できることは知っています:

for i = 1:length(a)
b(i) = str2num(cell2mat(a(i)));
end
そこで、もっと簡単に一段階でこの変換を行う方法があるのか疑問に思っています。 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 13 Nov 2024 at 0:00
文字ベクトルのセル配列を数値に変換するには、str2double関数を使用するのが最も簡単な方法です。
C = {'0.000000'; '10.000000'; '100000.000000'}; M = str2double(C);
cell2mat関数は、文字ベクトルのセル配列を文字配列に変換しますが、これはすべての文字ベクトルが同じ長さである場合に限ります。また、cell2matはセルの内容のデータ型を保持するため、文字を数値に変換しません。
もしコードの実行速度を重視する場合は、以下のコードを使用してください。このコードはstr2doubleよりも高速です:
C = {'0.000000'; '1.000000'; '2.000000'; ... '3.000000'; '4.000000'; '5.000000'; '6.000000' '7.000000'; '8.000000'; '9.000000'; '10.000000'}; S = sprintf('
(注:コードが途中で切れているため、続きが必要です。) 

More Answers (0)

Categories

Find more on ビッグ データの処理 in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!