如何在Octave中使用变量文件名将结构保存到文件中?

时间:2012-08-17 14:32:24

标签: file struct save octave

在Octave中,我想将结构保存到文本文件中,在该文本文件中,在脚本运行期间决定文件的名称。用我的方法我总是收到一个错误:

expecting all arguments to be strings. 

(对于固定文件名,这样可以正常工作。)那么如何使用变量文件名将结构保存到文件中?

clear all;
myStruct(1).resultA = 1;
myStruct(1).resultB = 2;
myStruct(2).resultA = 3;
myStruct(2).resultB = 4;

variableFilename = strftime ("result_%Y-%m-%d_%H-%M.mat", localtime(time()))

save fixedFilename.mat myStruct; 
% this works and saves the struct in fixedFilename.mat

save( "-text", variableFilename, myStruct); 
% this gives error: expecting all arguments to be strings

1 个答案:

答案 0 :(得分:4)

在Octave中,当使用save作为函数时,您需要执行以下操作:

myfilename = "stuff.txt";
mystruct = [ 1 2; 3 4]
save("-text", myfilename, "mystruct");

上面的代码将创建一个stuff.txt文件,矩阵数据放在那里。

上述代码仅在mystruct是矩阵时才有效,如果你有一个字符串单元格,它将失败。对于那些,你可以自己动手:

 xKey = cell(2, 1);
 xKey{1} = "Make me a sandwich...";
 xKey{2} = "OUT OF BABIES!";
 outfile = fopen("something.txt", "a");
 for i=1:rows(xKey),
   fprintf(outfile, "%s\n", xKey{i,1});
 end
 fflush(outfile);
 fclose(outfile);