2017-04-19 63 views
-3

誰かが私を助けることができますか?構造体配列をdoubleまたはcomplex doubleに変換する場合は、svm classifierの入力として使用する必要があるため、何をする必要がありますか。struct配列を数値またはdouble配列に変換する

+0

は..私はすでに19特徴抽出各1が含まれている7人の患者を組み合わせ –

+0

...これまでに私達にあなたのコードを表示してください私はSVMで使用して..when 19フィールドを持つ7x1の構造体のデータclc;全てをクリア;全てをクローズ; load trainset.mat data = new_var; グループ=ラベル。 SVMStruct = svmtrain(データ、グループ、 'kernel_function'、 'linear'); 種= svmclassify(SVMStruct、meas、 'showplot'、false);エラーはsvmtrain(line 241)を使用してエラーになります TRAININGは数値マトリックスでなければなりません。私はダブル構造体配列を変換する必要があることを知っているが、どのように知っている?あなたが助けることができます –

+1

最初の質問に適切な書式でコードを追加すると、はるかに役立ちます。コメントからそれを読むことは難しいです...また、エラーの原因となっている構造の小さな抽出を見るのにも役立ちます。 – user2027202827

答えて

0

あなたのデータ構造体は次のようになりますと仮定すると、(7人の患者、19個の機能および各患者のための150個の特徴ベクトルを持つ):

data = 

    p1: [150x19 double] 
    p2: [150x19 double] 
    p3: [150x19 double] 
    p4: [150x19 double] 
    p5: [150x19 double] 
    p6: [150x19 double] 
    p7: [150x19 double] 

、あなたは(あなたが区別はありません一つの大きな行列にそれらを連結します

% Generate test data 
data.p1(:,1:19) = randn(150,19); 
data.p2(:,1:19) = randn(150,19); 
data.p3(:,1:19) = randn(150,19); 
data.p4(:,1:19) = randn(150,19); 
data.p5(:,1:19) = randn(150,19); 
data.p6(:,1:19) = randn(150,19); 
data.p7(:,1:19) = randn(150,19); 

% Add each patient features to cell array 
data_cell = cellfun(@(field) data.(field), fieldnames(data), 'UniformOutput', false); 

% Vertically concatenate the entries in the cell array from above 
data_combined = vertcat(data_cell{:}); %1050x19 double 
あなたにも同様の方法であなたの groupラベルを連結する必要があります

、作るあなたがいないんロース:フォーム1050x19 doubleの)あなたのSVMを訓練する際の患者は、その後、次のコードスニペットは、トリックを行いますどのグループラベルが結合されたデータ内のどの特徴ベクトルに対応するかを追跡する。運の

ベスト

+0

ありがとうございますが、特徴ベクトルは何ですか?私は7×1の19フィールドの構造体を持っていますが、1つはフィーチャベクタとして扱うべきですか? –

関連する問題