Help with iterations over large file.

9 Ansichten (letzte 30 Tage)
gero pulido
gero pulido am 11 Dez. 2023
Kommentiert: Dyuman Joshi am 12 Dez. 2023
Hello everyone, I have a huge ascii.txt wind file with the following format.
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
The thing is that I need to flip the rows from each block between hours, like this
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
I can do this for one block by
X = readlines('xwind.txt');
Y = X(2:5);
Y = flip(Y);
But I couldn’t write the loop for the entire file (4865x1 string).
Any help would be much appreciated.

Akzeptierte Antwort

Dyuman Joshi
Dyuman Joshi am 11 Dez. 2023
If the format of the data is homogenous through the file, try this -
in = readlines('ascii.txt')
in = 10×1 string array
"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"
for k=2:5:size(in,1)
in(k:k+3,:) = flipud(in(k:k+3,:));
end
in
in = 10×1 string array
"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 "
  2 Kommentare
gero pulido
gero pulido am 12 Dez. 2023
Thank you! It worked perfectly
Dyuman Joshi
Dyuman Joshi am 12 Dez. 2023
You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Mathieu NOE
Mathieu NOE am 11 Dez. 2023
hello
try this
I choosed to store each Y array into a cell
D=readlines('data.txt'); % read as string array
[eof] = size(D,1); % last row number (end of file)
ixP1=find(contains(D,'time')); % find the "time" line
ixP1=[ixP1 ; eof]; % add end of file line number
for k=1:numel(ixP1)-1
ind = ixP1(k)+1:ixP1(k+1)-1;
Y = str2num(char(D(ind)));
Y = flip(Y);
out{k} = Y; % store Y flipped in cell array
end

Kategorien

Mehr zu File Operations finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by