我一直在向群集提交多个matlab脚本作为数组作业,这是有效的。但是我一直在手动生成每个脚本!比方说x = 1:1000
,我想改变:
filename = foo_x.m
和mscript中的参数
a = x;
b = 'x_1';
c = 'x_2';
即。任务是生成多个完全相同的文件,除了它们的x值。 x出现在脚本和文件名中。
我对python,sed和vim有一点经验。有关解决此类任务或任何教程的最佳方法的任何建议吗?
答案 0 :(得分:3)
使用diary
在Matlab中快速解决方案:
for x = 1:1000
diary(['foo_' num2str(x) '.m' ])
disp(['a = ' num2str(x) ';'])
disp(['b = ''' num2str(x) '_1'';'])
disp(['c = ''' num2str(x) '_2'';'])
diary off
disp(' ')
end
如果您需要“foo_0001.m”形式的文件名(即填充左边的零号),请将循环中的第一行替换为
diary(['foo_' num2str(x,'%.4d') '.m' ])
答案 1 :(得分:2)
使用str.format
。
在以下代码template
中包含{0}
。把它想象成占位符。使用str.format
,您可以使用str.format
的第一个参数替换参数。
template = '''
a = {0};
b = '{0}_1';
b = '{0}_2';
'''
for x in range(1, 1000+1): # loop from 1 to 1000
with open('foo_{}.m'.format(x), 'w') as f: # Open file ("w"rite mode)
f.write(template.format(x)) # render the template string
# replacing placeholder (`{0}`)
如果您希望文件名看起来像foo_{}.m
而不是foo_{:04}.m
,请将foo_0012.m
替换为foo_12.m
。