我有一个MATLAB脚本,该脚本创建一个矩阵“ newmatrix”,并将其导出为matrix.txt:
save -ascii matrix.txt newmatrix
在我的脚本中,我还计算矩阵某些元素之间的距离,因为矩阵的大小取决于我在脚本中指定的变量“宽度”。
width = max(newmatrix(:,5)) - min(newmatrix(:,5))
x_vector = width + 2
变量x_vector定义为width + 2
我想知道是否可以导出x_vector并将其标记为my_vector $ x_vector,以便当x_vector的值等于7.3时将生成“ my_vector 7.3”
我尝试过:
save -ascii 'my_vector' + x_vector
但是收到以下错误:
警告:保存:没有这样的变量+
警告:没有这样的变量“ my_vector”
答案 0 :(得分:1)
三件事:
1)我更喜欢使用函数形式的调用,以便可以传递变量而不是静态字符串。
save -ascii matrix.txt newmatrix
等效于:
save('-ascii','matrix.txt','newmatrix')
换句话说,在第一种形式中,所有输入都被视为该函数的字符串输入。
2)您不能在Matlab中添加字符数组。而是将它们串联或使用sprintf。
name = sprintf('my_vector_%g',x_vector);
save('-ascii',name)
请注意,通过使用函数形式,我们现在可以传递变量。但是请注意,这不会起作用,因为name
应该是有效选项或变量,而my_vector_7.3也不是。
3)我不确定您要问什么,但我认为您希望文本文件说“ my_vector 7.3”。我不认为-ascii支持字符串...。您可以使用fprintf编写一些内容。
fid = fopen('matrix.txt','w');
fprintf(fid,mat2str(new_matrix));
fprintf(fid,'\n');
fprintf(fid,'my_vector %g',x_vector);
fclose(fid);