2017-04-19 116 views
-3

有人可以帮助我。我需要做什么,如果我想要转换结构数组为双或复杂的双重,因为我需要使用它作为svm分类器的输入。感谢高级。将结构数组转换为数字或双数组

+0

请告诉我们你的代码到目前为止... –

+0

我已经组合包含19特征提取每一个患者7例.. ..when我在SVM使用7X1结构中的数据与19场clc;清除所有;关闭所有; load trainset.mat data = new_var; group = label; SVMStruct = svmtrain(data,group,'kernel_function','linear'); species = svmclassify(SVMStruct,meas,'showplot',false);错误将是使用svmtrain的错误(第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] 

,并想将它们连接成一个大矩阵(你会不会区分患者形式1050x19 double的训练你的SVM)时,则下面的代码将这样的伎俩:

% 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标签以类似的方式为好,确保你不会洛斯跟踪哪个组标签对应于组合数据中的哪个特征向量。

最好的运气

+0

谢谢,但什么是特征向量?我有7个1结构19场,我应该假设为特征向量? –