フィルターのクリア

how to process the data in a file and repeat the procedure for different folders?

2 ビュー (過去 30 日間)
kimy
kimy 2021 年 8 月 23 日
コメント済み: Wan Ji 2021 年 8 月 23 日
I have a set of files called "p" under the folder of "surface->0.1 (folder named by time steps)->patchgorund->scalarField". As you can see in the attachment, in the file "p" there are 400 data inside bracket. Now I have to change those data by minus a number, for example, p-1000. Then repeat this procedure for each folder (0.1, 0.2, 0.3.....->patchgorund->scalarField->p). Do you have any ideas?
  2 件のコメント
Stephen23
Stephen23 2021 年 8 月 23 日
"Do you have any ideas?"
Loop over the folders, import the file data, change the data, export the data to file.
kimy
kimy 2021 年 8 月 23 日
thank you.

サインインしてコメントする。

採用された回答

Wan Ji
Wan Ji 2021 年 8 月 23 日
Here is an example for reading files and changing its content
q = 0.1:0.1:2;
folder = arrayfun(@(i)['surface\',num2str(q(i)),'\patch_ground\scalarField\p'],1:numel(q),'uniform',0);
for i = 1:1:numel(fid)
s = fileread(folder{i});
ch = s;
s1 = strfind(ch,'(');
s2 = strfind(ch,')');
data = str2num(ch(s1+1:s2-1)) - 1000; % minus 1000
ss = num2str(data','%f\n');
ch = [ch(1:s1), ss, ch(s2:end)];
fid = fopen(folder{i},'wt');
fprintf(fid,'%s',ch);
fclose(fid);
end
  5 件のコメント
kimy
kimy 2021 年 8 月 23 日
However, what I got is like below if I added '\n', which seems to me '\n' was regarded as a string in this case.
400
(\n195910.263000
195908.263000
......
Wan Ji
Wan Ji 2021 年 8 月 23 日
you can use newline instead ch = [ch(1:s1),newline, ss, newline,ch(s2:end)];

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by