2

MATLABを使用して、タブ区切りのテキストファイルからセルの範囲を読み取りたい。このセルの範囲は数値である必要がありますが、最近、これらの数値を提供するソフトウェアは、数値が大きすぎる場合に、数値の代わりにMAXという単語を配置しました。これは、私が今見ているセルの範囲には、MAXと言ういくつかの文字列が含まれており、残りは数値であることを意味します。

私はこれまでdlmreadを使用してこの範囲の数値を読み取り、正常に機能しています。MAXがある場合、dlmreadは機能しません。

データの読み取りに使用したコードは次のとおりです。

data = dlmread(filename, '\t', 20, 5);

エラーは次のとおりです。

Mismatch between file and format string.
Trouble reading number from file (row 152u, field 31u) ==> MAX
MAX MAX 552.397949  33.415199   7.425600    3.379600
6.6422090   \n

このファイルを.csvに変換せずに読み取る方法はありますか?ファイルを読み込んで、MAXと表示されているセルを1500のような数値に変更したいと思います。

4

3 に答える 3

5

あなたが試すことができますtextscan

C = textscan(fid, '%f', 'delimiter', '\t', 'treatAsEmpty', {'MAX'},'EmptyValue', 1500);

これは、N がファイル内の値の数である 1 行 N 列のセル ベクトルを返します。それを行列に変換するには、次を使用できますreshape

C = reshape(cell2mat(C),[numOfRows numOfCols]);
于 2013-03-04T20:21:06.500 に答える
0

最も簡単な方法は、単純にファイルを前処理して "MAX" の検索と置換を行い、"inf" または選択した数 (つまり 1500) と交換することです。

于 2013-03-04T19:24:22.763 に答える