1

現在、importdata で形成された 435x1 セル配列があります。各要素は、カンマで区切られた 17 個の値を持つ文字列です。

1 つの要素に行ごとに 1 つの文字列を含めるのではなく、各行の列を文字列で埋める必要があります。したがって、基本的には、各要素が文字列である 435x1 セル配列ではなく、各要素が 1 つのセル配列である 435x17 セル配列が必要です。

私がこれまでに得た最も近いものは次のとおりです。

data = importdata('my_data.data');
for x=1:size(data,1)
    data(x,:) = {strsplit(data{x}, ',')};
end

これにより、各要素の文字列がセル配列になります。上記のコードでは、まだ 435x1 のセル配列がありますが、各要素は 1x17 のセル配列になっています。

これを 435x17 のセル配列に変換するように誰か教えてもらえますか? どんな助けでも大歓迎です。

データ ファイルの行は次のようになります。

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y

これらの文字列は 435 行あります。列がコンマで区切られた文字列である 435x17 セル配列が必要です。

4

4 に答える 4

2

を使用してこれを行うことができますcat。より小さな例を次に示します。

data = {{1,2,3};{4,5,6};{7,8,9};{10,11,12}};
size(data)
ans =

   4   1

newData = cat(1,data{:});
size(newData)
ans =

   4   3

編集:代わりに文字列のセル配列がある場合は、次のことができます。

data = {{'123'};{'456'};{'789'};{'abc'}};
size(data)
ans =

   4   1

data2 = cat(1, data{:});
data3 = cell2mat(newData);
size(data3)
ans =

   4   3

data3 =

123
456
789
abc
于 2013-10-29T02:00:51.693 に答える
0

サンプルデータはありますか?おそらくcsvファイルのほんの数行ですか?

とにかく、R2013b を使用している場合は、テーブルを使用してこれを実行できるはずです。「data.csv」ファイルの場合:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
democrat,y,n,y,n,n,n,y,y,y,n,!,n,n,n,y,n

次に、 tableを使用してこれを matlab にインポートできます。

>> t = readtable('data.csv','ReadVariableNames', false)

t = 

        Var1        Var2    Var3    Var4    Var5    Var6    Var7    Var8    Var9    Var10    Var11    Var12    Var13    Var14    Var15    Var16    Var17
    ____________    ____    ____    ____    ____    ____    ____    ____    ____    _____    _____    _____    _____    _____    _____    _____    _____

    'republican'    'n'     'y'     'n'     'y'     'y'     'y'     'n'     'n'     'n'      'y'      '?'      'y'      'y'      'y'      'n'      'y'  
    'democrat'      'y'     'n'     'y'     'n'     'n'     'n'     'y'     'y'     'y'      'n'      '!'      'n'      'n'      'n'      'y'      'n' 

こんな感じで簡単に表が作れます。また、セル配列として処理するのではなく、テーブルを使用してこのデータを保持することを検討することをお勧めします。これは、データ処理タスクを処理するように作成されており、実行しようとしていることに役立つ機能があるためです。ただし、本当にセル配列にする必要がある場合は、テーブルをセルに変換するだけで済みます。

>> c = table2cell(t)

c = 

    'republican'    'n'    'y'    'n'    'y'    'y'    'y'    'n'    'n'    'n'    'y'    '?'    'y'    'y'    'y'    'n'    'y'
    'democrat'      'y'    'n'    'y'    'n'    'n'    'n'    'y'    'y'    'y'    'n'    '!'    'n'    'n'    'n'    'y'    'n'

>> size(c)

ans =

     2    17

それが役立つことを願っています!

于 2013-10-29T02:00:22.353 に答える