問題タブ [textscan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
139 参照

string - 文字列に「for」と「if」を使用するMatLab

単語と数字を含む text.txt があります。

1. 文字列を含むセルまたは行列に「for」と「if」を使用したい。


これはうまくいきませんでした。

2. こんなことがしたい。


Matlab 以外の方法で書かれていますが、私がやりたいことはわかっています。

text と text2 が数値の行列である場合、このタイプの作業は簡単かもしれません。しかし、それらは文字列です。

数値行列に対して行うのと同じことをどのように実行できますか?

0 投票する
2 に答える
1171 参照

string - MATLAB での textscan による固定幅文字列の読み取りエラー

textscan を使用して、テキスト ファイルから固定幅 (9 文字) のデータを読み取っています。次の文字列を含む特定の行で Textscan が失敗します。

これから2つの数字を読みたい:

問題は次のように再現できます。

次のエラーが返されます。

驚いたことに、マイナスを追加すると、エラーにはなりませんが、間違った結果が得られます。

現在、データ{1}は次のとおりです。

明らかに、両方のケースが機能する必要があります。私の現在の回避策は、フィールド間にコンマを追加し、テキストスキャンでコンマを区切り文字として使用することですが、それは遅く、良い解決策ではありません。textscan または別の組み込みの (パフォーマンス上の理由から) MATLAB 関数を使用して、この文字列を正しく読み取る方法はありますか?

0 投票する
2 に答える
21602 参照

arrays - MATLAB: textscan を使用し、セル配列を行列に変換する

次の構造のオプション データを含む大きな csv ファイル (約 100 万行) があります (内容は変更されています)。

以下を使用して、テストファイルを正常にインポートしました。

ただし、C はセル配列であるため、matlab でファイルの内容を処理するのが難しくなります。「通常の」配列として持つ方が簡単です(正しい命名法がわからないことを許してください。私はmatlabで作業を始めたばかりです)。

C を出力すると、次のようになります。

したがって、C であるセル配列の内部には、配列とセル配列 (数値の配列と文字列のセル配列) があります。要素 (1,2) をチェックするには C{1}(2) を使用する必要がありますが、要素 (2,2) をチェックするには C{2}{2} を使用する必要があります。理想的には、C(1,2) と C(2,2) の両方としてアクセスしたいと考えています。問題は、これをどのように行うかです。

私は解決策を検索してcells2matを見つけましたが、すべてのコンテンツが数値である場合にのみ機能します(私は思う)。私はこの解決策を見つけました:セル配列のセル配列を行列の行列に変換しますが、horzcat はエラーを取得します。これは、同じ問題が原因で発生する可能性があると考えられます。

よろしくお願いいたします。

0 投票する
1 に答える
2441 参照

matlab - 複数の区切り文字でテキストスキャンする方法

次の形式の行が何千行も含まれているファイルを読み込もうとしています。

タブ区切りファイルです。最後の列はドントケアです。その前の 2 列は変数なので、文字列として読み取ります。私の主な問題は、2 番目の列です。いくつかに分かれた数字です

は 2013 年、99 日、2314.029 秒です。

textscan を使用してファイル全体を一度に読み取りたいのですが、読み取り時にその複雑な日付文字列を何らかの方法で分割します。

現在、スキャン文字列があります:

日付文字列を 2 つの float に読み取ります。私が本当にしたいのは、それを2つのintとfloatに読み込むことです。しかし、使用して

それを 2013 と 2314 に切り捨て、残りの行を台無しにします。「。」をエスケープしてみました。と '。' しかし、それはエラーをポップします。

助言がありますか?ファイルのサイズが大きいためにスキャンインされるので、これを行いたいと思います。大規模なデータ セットのタイプを変更しようとすると、メモリが不足します。

編集:

2 つの整数と浮動小数点数を返すには、2013.99.2314.029 のスキャン文字列が必要です。

うまくいきません。また、区切り文字を「.」として使用することもありません。%u も試しました。読み込むときに小数点を四捨五入します。

ため息。