2016-06-30 7 views
1

私はmatlabの数値に変換したい数値(文字列形式)のセル配列を持っています。問題は二重引用符で囲まれているため、str2numを使用して変換できないようです。matlabで文字列を数値に変換する

a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'} 

数字から二重引用符を削除する方法はありますか?ありがとう!

答えて

4

二重引用符を手動で削除する必要があります。 cellfunを使用すると、anonymous functionを各セルに適用できます。最初と最後の文字オフ

  1. 匿名関数単にストリップ:ここでは2つの方法があります。

    a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'}; 
    result = cellfun(@(x) str2double(x(2:end-1)), a); 
    
  2. 一部の文字列は二重引用符記号を含めることはできません、または任意の位置にいくつかのを含むことができ、は、いずれかを削除することを匿名関数を使用した場合:二重引用符のシンボルは、それらの位置に常にある場合、これは動作しますそのシンボルの出現:助けを

    a = {'15'; '16'; '"17"'; '30"'; '"""50"""'}; 
    result = cellfun(@(x) str2double(x(x~='"')), a); 
    
+1

感謝。できます! – TYL

+1

[regexp](http://mathworks.com/help/matlab/matlab_prog/regular-expressions.html)を使用すると少し速く、多分もっと頑丈なソリューションです。result = cellfun(@ str2double、regexp(a、 '\ d + \。?\ d *'、 'match')) ' – serial

+0

@serial良いアイデア。しかし、正規表現は、負の数や '.123'(先行する' 0')のようなものがあれば修正されるでしょう。 –

関連する問題