将struct数组转换为numeric或double数组

时间:2017-04-19 02:58:33

标签: matlab

有人能帮助我吗?如果我想将struct数组转换为double或complex double to double,我需要做什么,因为我需要将它用作svm classifier的输入。谢谢高级。

1 个答案:

答案 0 :(得分: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标签,确保不会忽略哪个组标签与组合数据中的哪个特征向量相对应。

祝你好运