我有一个代码,我在其中创建了大量相同的变量,我想存储它的所有值。通常情况下,我会使用for loops
来存储所有这些内容,但由于一些复杂情况,目前无法实现。
我必须计算变量x
,将其存储为x1
。计算具有不同条件的x
并将其存储为x2
等。我遇到的问题是我必须手动将代码中的所有x
更改为{{ 1}},x2
,x3
等。其中有很多。有没有办法更有效率?
为了更好地说明:
x4
答案 0 :(得分:2)
如果您真的很绝望,可以使用eval
并循环遍历所有变量名称,假设它们的编号为1到n
。
count = 1;
while exist(['x',num2str(count)],'var')
eval(['x(count)=x',num2str(count),';'])
count = count + 1;
end
此代码假设所有内容都已编号为x1
,x2
,x3
等。它将继续循环,直到下一个“顺序”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);