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

조회 수: 25 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2024년 11월 13일
답변: MathWorks Support Team 2024년 11월 13일

例えば、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일
文字ベクトルのセル配列を数値に変換するには、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 CenterFile Exchange에서 データ型の変換에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!