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 に答える