MATlab中的数据隔离

MATlab中的数据隔离,matlab,Matlab,我试图在mx4矩阵中隔离特定的数据部分。有大量的数据点,我需要能够在矩阵中隔离数据的特定部分 为了解决这个问题,我有8个大小相同的数据集(mx8),每个数据集都有不同的数据值。此外,在每个数据矩阵中,有一个中断,其中有2列而不是4列 我需要找到一种方法,一次读取所有文件,在所有8个矩阵中分离出数据的特定列,在所有8个矩阵中分离出相同的数据部分,然后将数据平均化为单个矩阵 现在我得到的是: clear for n = 1:8 raw = fileread(['filename',num2s

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

为了解决这个问题,我有8个大小相同的数据集(
mx8
),每个数据集都有不同的数据值。此外,在每个数据矩阵中,有一个中断,其中有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重复一次
我试图将每个周期中的数据分离出来,使其等于一个可以操作或绘制的变量。

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

[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, :))

我们需要更多的细节,数据是什么样的?您要隔离的具体案例是什么?46 0.91 26.74 338.587 47 0.93 59.92 334.635 48 0.95 92.95 310.797 49 0.97 24.15 275.747 50 0.99 31.34 298.097 250000 50 1 0.01 39.21 306.325 2 0.03 112.6 290.669 3 0.05 22.46 259.802 4 0.07 30.6 342.462使用编辑按钮并将其添加到问题中。通过在前面添加4个空格来正确设置格式,就像我对代码所做的那样。另外,您要隔离的具体案例是什么?我明白了,谢谢。你看了吗?如果我想跳过前三行怎么办?我需要跳过数据文件中的前三行。如果总是3行,您可以在开始时执行
fgets(fid)
三次,它将跳过前3行。是否有一种方法可以创建for循环,为我找到数据块,然后将它们分离到单独的矩阵中?甚至每50个数据点采集一次数据