2017-02-25 67 views
0

我有兩個文件,Editor.m和Parameters.m。我想在Editor.m寫代碼,在運行時執行以下任務:如何編寫一個編輯另一個MATLAB文件(.m)的MATLAB代碼?

  • 讀取Parameters.m中有一條線
  • 搜索(例如DT = 1)
  • 的東西代替它否則(例如dt = 0.6)
  • 保存Parameters.m。

因此,在這個過程結束時,Parameters.m將包含行dt = 0.6而不是dt = 1,而不需要我直接編輯它。

有沒有辦法做到這一點?如果是這樣,怎麼樣?

回答

1

您可以使用regexprep來替換感興趣的值。

% Read the file contents 
fid = fopen('Parameters.m', 'r'); 
contents = fread(fid, '*char').'; 
fclose(fid); 

% Replace the necessary values 
contents = regexprep(contents, '(?<=dt=)\d*\.?\d+', '0.6'); 

% Save the new string back to the file 
fid = fopen('Parameters.m', 'w'); 
fwrite(fid, contents) 
fclose(fid) 

如果你能保證它僅會顯示爲'dt=1',那麼你可以使用strrep代替

contents = strrep(contents, 'dt=1', 'dt=0.6'); 
+0

謝謝。你能簡單地解釋一下(內容,'(?<= \ ndt =)。*?(?<= \ n)','0.6')是什麼意思? 如果我確定dt = 1(我的文件中沒有其他地方),我可以用(contents,'dt = 1','dt = 0.6')替換它嗎? – odnerpmocon

+0

@odnerpmocon它是一個正則表達式,它匹配'dt ='後面的任何數字,並用'0.6'替換它。它比純搜索'dt = 1'更強大 – Suever

+0

太好了,非常感謝! – odnerpmocon

相關問題