在MATLAB中隔离数据

时间:2014-07-08 22:30:54

标签: matlab

我试图在m x 4矩阵中隔离特定的数据部分。有大量的数据点,我需要能够隔离矩阵中特定的数据部分。

要添加问题,我有8个大小相同的数据集(m x 8),每个数据集中都有不同的数据值。此外,在每个数据矩阵中,有一个中断,其中有2列而不是4列。

我需要找到一种方法来同时读取所有文件,在所有8个矩阵中隔离数据的特定列,在所有8个矩阵中隔离相同的数据部分,然后将数据平均为单个矩阵。

现在我拥有的是:

clear
for n = 1:8
    raw = fileread(['filename',num2str(n)]); %num2str(n) is the test number which goes from 1-8
end

有更短的方法吗?

数据如下所示:

  1000 50
  1 0.01 33.37 252.052
  2 0.03 24.43 302.95
  3 0.05 113.4 303.35
  4 0.07 36.93 301.36
  5 0.09 30.18 272.923
  6 0.11 21.73 311.392
  7 0.13 98.14 309.547
  8 0.15 57.99 307.23
  9 0.17 28.3 294.802
  10 0.19 25.87 315.202
  11 0.21 88.8 271.713
  12 0.23 65.62 286.422
  13 0.25 27.9 338.652
  14 0.27 27.5 323.503
  15 0.29 65.8 302.545
  16 0.31 85.68 288.909
  17 0.33 25.68 368.932
  18 0.35 28.1 372.731
  19 0.37 52.03 386.33
  20 0.39 104.95 402.87
  21 0.41 23.45 349.083
  22 0.43 30.31 353.418
  23 0.45 42.89 410.256
  24 0.47 109.12 421.674
  25 0.49 23.26 379.214
  26 0.51 35.76 343.582
  27 0.53 26.3 401.289
  28 0.55 118.04 434.815
  29 0.57 29.12 376.607
  30 0.59 33.58 424.887
  31 0.61 23.23 393.065
  32 0.63 107.01 394.063
  33 0.65 47.05 449.556
  34 0.67 25.2 347.347
  35 0.69 29.56 386.667
  36 0.71 93.81 310.077
  37 0.73 59.56 338.902
  38 0.75 26.5 257.647
  39 0.77 25.89 296.728
  40 0.79 75.37 284.466
  41 0.81 78.66 274.047
  42 0.83 28.25 263.322
  43 0.85 24.87 249.153
  44 0.87 58.41 294.226
  45 0.89 97.23 288.702
  46 0.91 22.02 313.901
  47 0.93 30.99 278.787
  48 0.95 37.59 331.611
  49 0.97 116.68 291.19
  50 0.99 21.89 277.714
  2000 50
  1 0.01 32.46 254.776
  2 0.03 23.79 323.679
  3 0.05 112.33 301.529
  4 0.07 37.24 318.256
  5 0.09 30.47 254.25
  6 0.11 23.79 307.803
  7 0.13 100.33 317.979
  8 0.15 54.73 308.255
  9 0.17 27.95 268.967
  10 0.19 26.2 314.853
  11 0.21 87.03 271.006
  12 0.23 66.81 289.273
  13 0.25 27.41 317.178
  14 0.27 27.33 321.76
  15 0.29 69.99 325.501
  16 0.31 82.7 287.062
  17 0.33 26.21 393.801
  18 0.35 28.07 373.959
  19 0.37 57.72 384.509
  20 0.39 99.11 395.208
  21 0.41 22.67 352.55
  22 0.43 30.84 363.797
  23 0.45 43.4 413.233
  24 0.47 108.33 420.134
  25 0.49 23.17 402.015
  26 0.51 36.52 340.785
  27 0.53 26.55 374.52
  28 0.55 120.69 422.856
  29 0.57 26.18 392.931
  30 0.59 33.7 428.731
  31 0.61 22.82 412.042
  32 0.63 105.36 407.581
  33 0.65 48.39 426.492
  34 0.67 26.35 356.509
  35 0.69 27.29 389.012
  36 0.71 90.77 303.742
  37 0.73 62.94 324.713
  38 0.75 27.02 273.747
  39 0.77 27.18 264.457
  40 0.79 71.91 293.905
  41 0.81 78.46 274.991
  42 0.83 28.82 272.619
  43 0.85 27.21 241.423
  44 0.87 54.81 285.661
  45 0.89 101.26 292.041
  46 0.91 22.54 317.539
  47 0.93 30.44 292.688
  48 0.95 39.77 326.761
  49 0.97 115.9 285.359
  50 0.99 21.04 296.302

第一列在完成1-50循环后重复,第二列每0.01-0.99重复一次 我试图在每个周期中隔离数据并使其等于我可以操作或绘制的单个变量。

1 个答案:

答案 0 :(得分:0)

因此,您可以使用here提供的答案将数据转换为单元格数组。即:

[1000] [50]   []      []
[1]    [0.01] [33.37] [252.052]
...
[50]   [0.99] [21.89] [277.714]
[2000] [50]   []      []
[1]    [0.01] [32.46] [254.776]

然后,您可以搜索具有两个空单元格的行。

emptyCells = cellfun(@isempty,a);

您应该能够以这种方式分离您的数据。假设您发现第51行和第101行之间是您的数字所在的位置。您可以使用以下方法将它们转换为矩阵:

matrix = cell2mat(cell(51:101, :))