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个数据点采集一次数据