2016-05-24 13 views
0

私は100 +名前\二重の行でタブファイルからインポートされた構造体配列を持っています。最初の行には文字値(name \ char)があります。私はこれを行列として読み込み、それをセルに変換して、一番上の行を完全に削除しようとしています。構造体をセルまたはマトリックスに変換しますか?

しかし、私はcell2mat(array)を使用する場合、それはエラーがあります。

All contents of the input cell array must be of the same data type.

私は、これは名前対ダブルカラムから知っています。しかし、これを行列に変換する方法はありますか?または、データが

の行である場合
name | 1000x1 double 

これをセル配列として残す方が良いでしょうか?

+0

私はあなたの記述を正しく理解していれば、データには1行の名前が含まれており、残りは数字ですか?なぜ現在のフォルダビューア(サイドバーまたはタブにMATLABでのインポートツールを(使用しない)右データファイルをクリックして、「インポートデータを...」。そこに、あなたは簡単に最初の行を除外することができ、残りのデータをインポートしますどちらかの名前の列ベクトルとして(任意の行に基づいて名前を、例えば最初に)、マトリックスまたは何でもしたいデータの種類。インポートデータ]ボタンをクリックすると、あなたもこの正確なプロセスを繰り返すことになりますスクリプトや関数を生成することができます。!。あなたのために、より多くのファイルのために非常に便利であることができる – Erik

答えて

0

文字列と数値の両方を含む行列を持つことはできません。このようなことが必要な場合は、セル配列のみが選択肢です。しかし、行列/ベクトル演算を使用して数値を処理したい場合、または行列/ベクトルを入力として期待する関数を非常に制限することになります。 1つのオプションは、文字列と数値データを別々に格納することです。文字列をセル配列Sに、数値データを行列Mのままにします。次に、要素を追跡します。たとえば、S{i}と行M(i, :)は、元のテーブルのエントリiに対応しています。もう一つの選択肢は、文字列と数値の両方を含むことができるstruct()を使って独自のデータ構造を作ることです。

+0

ありがとうそれは特にそれが分析することである方法を知るにはトンを助け、私は1000x1ダブルスでちょうど第二カラム(の配列にcell2mat(配列)を使用しようとしました。最初の列の名前を削除します)。これですべての値がnx 1に連結されますが、セル配列内の行を連結して行列を作成するにはどうすればいいですか? [行1の値] [行2の値] など? – Dee

+0

私はM = [array(2:125)* rangeは、コマンドラインで動作するように見える最初の行*を削除して、[1000x1 double]要素のテキストを1つの列に表示することでした。しかし、私が変数を見ると、それは細胞型変数だと言います。 – Dee

関連する問題