我有一个.m文件,其中包含带有一些矩阵的结构:
%mymatfile.m
function [mymatrix,anothermatrix] = mymatfile;
mymatrix = [
1 2 0.0010 0.0010 0.0000 2.0000 2.0000 2.0000 1 0 1
2 3 2.0014 0.0007 0.0000 0.5000 0.5000 0.5000 0 0 1
3 4 0.0301 0.0001 4.0000 0.5000 0.5000 0.5000 1.16 0 1
4 5 0.0791 0.0450 0.0000 0.5000 0.5000 0.5000 0 0 1
5 6 1.0482 0.0233 0.0000 0.5000 0.5000 0.5000 0 0 1
5 7 7.5130 0.0467 0.0000 0.5000 0.5000 0.5000 0* 0 1
7 8 9.0161 0.0008 0.0000 0.5000 0.5000 0.5000 0 0 1
7 9 0.9070 0.2310 0.0000 0.5000 0.5000 0.5000 0 0 1
];
anothermatrix = [
2 0 0 3 0 10 0
9 0 0 3 0 10 0
%];
如何更改已加星标的值(mymatrix(3,9))并保存文件,同时保留其结构/格式?我需要从另一个matlab脚本执行更新。
答案 0 :(得分:5)
您可以将mymatrix
的条目保存在文本文件中,例如mymatrix_text
。
然后你让你的函数读取该文本文件,即
%mymatfile.m
[mymatrix,anothermatrix] = function get_my_matrices()
fid = fopen(mymatrix_text);
mymatrix = fscanf(fid, '%g ');
fclose(fid);
% anothermatrix = %% you can do the same above..
end
现在,如果您需要修改矩阵,您应该只修改文本文件 - 这样更容易,并且不涉及更改.m
文件。
(例如,您可以创建另一个函数来读取mymatrix_text
并更改所需的值。)
这种方法对我来说看起来更健壮。
答案 1 :(得分:0)
替换旧号码。这些字段似乎是制表符分隔的。
答案 2 :(得分:0)
以下是我最终的做法(注意S
是用于更新文件的值):
fid = fopen('mymatfile.m') % open settings file
fseek(fid,1196,-1) % set read position
Line = fgets(fid) % read in line
Refline = Line % set reference for search and replace later
Line(47:51) = S % update specific characters in the line with new setting
fclose(fid) % close file
wholefile = fileread('test.m') % read in entire file
newfiledata = strrep(wholefile,Refline,Line) % replace line
fid2 = fopen('mymatfile.m','w') % open file to write
fprintf(fid2,'%s',newfiledata) % save to file
fclose(fid2)
在这里的帮助下:[http://www.mathworks.com/matlabcentral/answers/7066]。