我有一个巨大的 ascii.txt Wind 文件,格式如下。
time = 0 hour
2 3 4 5 6 7
0 9 8 7 6 5
7 6 5 4 3 2
9 8 7 6 5 4
time = 3 hour
2 3 4 5 6 7
0 9 8 7 6 5
7 6 5 4 3 2
9 8 7 6 5 4
问题是我需要在几个小时之间翻转每个块的行,就像这样
time = 0 hour
9 8 7 6 5 4
7 6 5 4 3 2
0 9 8 7 6 5
2 3 4 5 6 7
time = 3 hour
9 8 7 6 5 4
7 6 5 4 3 2
0 9 8 7 6 5
2 3 4 5 6 7
我可以通过以下方式在 MATLAB 中的一个块中执行此操作:
X = readlines('xwind.txt');
Y = X(2:5);
Y = flip(Y);
但是我无法为整个文件(4865x1 字符串)编写循环。
任何帮助将不胜感激。
OriginalRow: [1 2 3 4 5 6 7 8 9 10 ...]
NewRow: [1 5 4 3 2 6 10 9 8 7 ...]
这里就相对偏移而言有一个重复的模式:
RowOffset: [0 +3 +1 -1 -3 0 +3 +1 -1 -3 ...]
因此,可以通过这么多地方进行洗牌的解决方案
N = numel(X); % Number of rows of text
offst = repmat( [0 +3 +1 -1 -3], 1, N/5 ); % Repeat offset to same size as X
Y = X( (1:N) + offst ); % Create Y from reordered rows of X