2016-06-30 4 views
0

私はmatlabにインポートしたいテキストファイルを持っています。私は関数textscanを使用しようとしたときテキストファイルをMatlabにスキャン

1,"4/26/2016","6:40:00 PM","111","0","13.45","NaN","ACTIVE","NaN", 
2,"4/26/2016","6:40:30 PM","73","0","14.99","NaN","ACTIVE","NaN", 

:ここでテキストファイル(tempfile.txt)の最初の2行である

fid = fopen('tempfile.txt'); 
data = textscan(fid, '%*d %s %s %s %*d %*d %*d %*s %*s', 'Delimiter', ',') 

それが唯一のテキストファイルの最初の行をインポート。 formatSpecに\ nを追加しようとしましたが、それでも動作しません。助けてください!彼らは文字列である、すなわち、あなたがそれらを解析することはできません -

M = csvread('tempfile.txt') 
+0

なぜアスタリスクを使用していますか?フィールド幅の後ろにいますか? – GameOfThrows

+0

私は、日付、時刻、および4番目(111&73)の列フィールドのみが必要です! – TYL

答えて

1

あなたの問題は、あなたのすべてのフィールドが引用され、二重であるということです。

+0

これは機能します!ありがとう、あなたは私のヒーローです、私は一日中matlabにデータをインポートすることを図解しようとしています。とにかく、なぜ二重引用符があるのか​​わかりませんが、あなたが示唆したように、str2numはそれを解決します。再度、感謝します! – TYL

0

あなたがカンマ区切りのCSVファイルではなく、この機能を試してみるようですフロート/ダブルスとして、代わりに文字列としてそれらを解析し、MATLABでダブルスにそれらをキャスト:

data = textscan(fid, '%d %s %s %s %s %s %s %s %s', 'Delimiter', ',') 
戻った数値にあなたのデータを変換するために str2numを使用し、その後、あなたのデータを解析することで正常に動作し

。なぜあなたはすべてを二重引用符で囲んでいますか?

============= EDIT ============

あなただけの3つのフィールドをしたいので、あなたのような何かを行う必要があります。

fid = fopen('abc1.txt'); 
data = textscan(fid, '%*d %s %s %s %*s %*s %*s %*s %*s', 'Delimiter', ',') 
+0

csvreadはすべての要素を数値にする必要があります(私はそうだと思います)。テキストファイルは対象外です – TYL

関連する問題