在matlab中将变量存储在数组中

时间:2014-05-19 13:50:19

标签: matlab variables

我有一个代码,我在其中创建了大量相同的变量,我想存储它的所有值。通常情况下,我会使用for loops来存储所有这些内容,但由于一些复杂情况,目前无法实现。

我必须计算变量x,将其存储为x1。计算具有不同条件的x并将其存储为x2等。我遇到的问题是我必须手动将代码中的所有x更改为{{ 1}},x2x3等。其中有很多。有没有办法更有效率?

为了更好地说明:

x4

1 个答案:

答案 0 :(得分:2)

如果您真的很绝望,可以使用eval并循环遍历所有变量名称,假设它们的编号为1到n

count = 1;
while exist(['x',num2str(count)],'var')
    eval(['x(count)=x',num2str(count),';'])
    count = count + 1;
end

此代码假设所有内容都已编号为x1x2x3等。它将继续循环,直到下一个“顺序”x不再存在。在所有声明发生后,这将在您运行的任何脚本或函数的末尾。

请注意,以最初的方式存储所有内容是非常不满意的。它使代码难以阅读和繁琐,而且不是很动态。

无论哪种方式,上面的代码应该可以解决问题。

您还可以编写正则表达式,将所有xn和任何实例替换为x(n)

只需运行以下代码行,为其指定要转换的文件名,然后繁荣它将为您处理所有替换

fileName = 'findReplace.m';
replaced = regexprep(fileread(fileName),'x([0-9]+)','x($1)');
fh = fopen(fileName,'w');
    fprintf(fh,replaced);
fclose(fh);