在MATLAB中动态标记

时间:2018-10-26 12:49:55

标签: matlab

我有一个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”

1 个答案:

答案 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);