文字配列を含む大規模なセル配列(それぞれ約10000x100セル)があります。これらは文字列であり、somtimesは '..'や 'x'などの類似したものです。 これらのセル配列を数値行列(二重配列)に変換して、すべての "数値文字列"が数値(倍精度)と他のすべてのエントリのゼロになるようにします。大規模な混合セル配列を文字列で変換して、Matlabで行列を高速化する方法はありますか?
例:私が持っている :
C = {'-34635', '22', 'x', '..', '5'; '..' , 'x', '-343','1','..'};
私が欲しい:
C_new = [-34635, 22, 0, 0, 5; 0, 0, -343, 1, 0];
私はstr2num
かstr2double
でそれを行うことができますが、それは恐ろしく遅いです。 sprintf
とsscanf
の使用例を読んでいますが、動作させることはできません。
これを達成するためのヒント/提案は速いです。 おかげ:)
ありがとう、私はこれを前に試してみました。それは本当ですが、それは恐ろしく遅いです。私はより速い方法を探しています。 –
'sscanf'についてこのリンクを見るhttps://fr.mathworks.com/matlabcentral/answers/18509-cell-conversion-to-double –
あなたが投稿した最初のリンクから正確にsprintfとsscanfを使う考えがありました。しかし、あなたが言及した理由だけで、私のデータで動作するようにすることはできません。つまり、私のデータは数字だけではありません。それはまさに私の質問です。私は数だけでなくセルでそれをどのように解決するのですか?あなたの助けをありがとう –