0

我有一个 .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 脚本执行更新。

4

3 回答 3

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和更改所需的值)。


这种方法对我来说看起来更健壮。

于 2012-10-29T17:30:12.117 回答
0

用一个数字代替旧的数字。这些字段似乎是制表符分隔的。

于 2012-10-29T17:22:24.607 回答
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]。

于 2012-10-30T11:51:29.320 回答