在 MATLAB 中使用循环翻转大文件中的行

问题描述 投票:0回答:1

我有一个巨大的 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 字符串)编写循环。
任何帮助将不胜感激。

loops matlab text iteration
1个回答
0
投票
您正在尝试在这两个行顺序之间切换:

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
    
© www.soinside.com 2019 - 2024. All rights reserved.