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

5 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2024 年 11 月 13 日 0:00
回答済み: MathWorks Support Team 2024 年 11 月 13 日 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
そこで、もっと簡単に一段階でこの変換を行う方法があるのか疑問に思っています。 

採用された回答

MathWorks Support Team
MathWorks Support Team 2024 年 11 月 13 日 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('
(注:コードが途中で切れているため、続きが必要です。) 

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeビッグ データの処理 についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!