【问题标题】:how to select some rows(for example row 1 to 5 and then row select 11 to 15 from same matfile) from mat file?如何从 mat 文件中选择一些行(例如第 1 到第 5 行,然后从同一个 matfile 中选择第 11 到 15 行)?
【发布时间】:2018-06-15 20:16:18
【问题描述】:

我有一个 mat 文件,其中有一些数据,第一列是类名,其余是它们的特征向量(例如格式是这样的:类 featureVector)。

  1. 我想从 mat 文件 X 中分割数据,其中包含类名和特征向量,用于测试和训练,例如:

trainData= X(第 1 行到第 5 行;

            then 11th row to 15th;
            and then 21th row to 25th row);

testData= X(第6行到第10行;

         then 16th row to 20th;
         and then 26th row to 30th row);

即训练数据(选择 1. 前五行 1 到 5 和 2. 然后跳过接下来的 5 行以选择第 11 到第 15 行和 3.然后再次跳过接下来的5行以选择第21到第25行)

即测试数据(选择 1.第二五行第6到第10和 2. 然后跳过接下来的 5 行以选择第 16 到第 25 行和 3.然后再次跳过接下来的5行以选择第21到第25行)

我怎么能在 matlab 中做到这一点?请帮帮我

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这应该可以解决问题:

    train = rand(30); // example data
    train_sel = train([1:5 11:15 21:25],:);
    
    test = rand(30); // example data
    test_sel = train([6:10 16:20 26:30],:);
    

    基本上,您所要做的就是从多个范围的聚合中创建行索引向量。然后,通过将它们应用于变量的第一个维度,您可以提取所需的行以及所有列 (colon operator:)。

    附带说明,我建议您仔细阅读this,因为它非常重要。

    【讨论】:

      【解决方案2】:

      假设 X 是一个 30*n 矩阵,其中 n 是您的列数:

      trainData=[X(1:5,:);X(11:15,:);X(21:25,:)]
      

      和:

      testData=[X(6:10,:);X(16:20,:);X(26:30,:)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多