关于Python的循环和文件自动命名(dspace中的运用)
小弟进来使用dspace做实验, 由于需要进行大量参数的实验,因此采用dspace中的macro 进行自动实验 自动储存数据,发现control desk 软件生成的macro采用python进行编写,但小弟没听说过这种语言,特请学过此语言的前辈赐教,关于Python循环和自动命名这两个方面的问题生成的宏 code如下,我将实验中每次需要修改的参数用红色粗体标记出来了
其中thre在设定范围为0:0.1:6
delay 在设定范围为0:0.001:0.1
实验部分 (删除一些冗余部分)
Instrumentation().Layouts.Item("c:\\dspace\\3103_201011.lay").Instruments.Item("dSPACE NumericInput Control_1_1_1.thre = 0
Instrumentation().Layouts.Item("c:\\dspace\\3103_201011.lay").Instruments.Item("dSPACE PushButton Control_1").delay = 0.01
存数据部分,目的是修改最后t0.mat那部分
举个例子比如说实验中thre = 0.1,delay = 0.002 那t0.mat 就应该写成thre1delay2.mat的形式 (命名使用整数, 相当于thre*10,delay*1000)
SaveRefCapture("C:\\dspace\\beam_torsion_bending\\01072010\\TestThresholdBeamingDamping\\ExBend800\\ExTorsion300\\t0.mat")
因此,实质就是两个问题, 一个是在上述程序加上循环,其次是每执行一次,就按照参数设定 自动命名下,方便后期数据处理
请前辈给点指导
可以自己转化字符串分割,也可以使用正则表达式匹配。。。
有个问题
thre=0.1时候:
delay = 0.001和delay = 0.01命名不是重复了吗?
都是thre1delay1.mat???
还有
thre=0.1时候delay=4.002时候名字是什么? 回复 2 # wqsong 的帖子
thre=0.1时候:
delay = 0.001和delay = 0.01命名分别为thre1delay1 和thre1delay10 不重复
关于 thre=0.1时候delay=4.002, 因为开始设定为
thre在设定范围为0:0.1:6
delay 在设定范围为0:0.001:0.1
所以不存在delay=4.002这个值
假设存在 那么命名为thre1delay4002
能说大概说下 循环的格式 和 转化字符串的命令不 我从来没用过python 只会用matlab做这种工作麻烦了 回复 2 # wqsong 的帖子
这里不重复。前面有说明的。 我不知道楼主说的是什么意思。
如果自动命名,只要一个string就够了
filename=“thre”+str(thre)+“delay”+str(delay)+“.mat”
回复 5 # smtmobly 的帖子
似乎楼主意思要取小数后面整数部分 能不能告诉我下 循环怎么写
我试试看看 这个宏能不能跑起来
我原来做一个变量的实验 就不厌其烦的把每个值 都写了一遍
现在两个变量 必须要写循环了
还有个问题 你定义了filename
数据类型应该是字符串吧
SaveRefCapture("C:\dspace\beam_torsion_bending\01072010\TestThresholdBeamingDamping\ExBend800\ExTorsion300\filename") 就可以了? 我去试试看
Thanks for your reply!
本帖最后由 wqsong 于 2010-11-30 22:48 编辑
要是整体按照(命名使用整数, 相当于thre*10,delay*1000)
filename='thre'+str(10*thre)+'delay'+str(1000*delay)+'.mat'
这样就可以
回复 6 # wqsong 的帖子
差不多但是也不能完全这么说
比如0.12 和0.012 就应该是120 和 12
因为从0.001开始 步长0.001做实验 做到0.12 是第120组数据 回复 9 # leeking30 的帖子
filename='thre'+str(10*thre)+'delay'+str(1000*delay)+'.mat'
那这样就可以。 回复 10 # wqsong 的帖子
谢谢您的回复, 能麻烦补上循环那一段吗 python是好像 不是for写循环
搞不清楚怎么写循环
要是能在试验中跑通 用DSPACE做重复实验就太方便了 回复 11 # leeking30 的帖子
thre=0
delay=0
while thre<=6:
while delay<=0.1:
#do something
filename='thre'+str(10*thre)+'delay'+str(1000*delay)+'.mat'
SaveRefCapture('C:\\dspace\\beam_torsion_bending\\01072010\\TestThresholdBeamingDamping\\ExBend800\\ExTorsion300\\'+filename)
delay+=0.001
thre+=0.1思路就是这样的。具体thre和delay哪个是主序,自己调整一下。 python中的for循环很特殊,是一个迭代器遍历。 回复 12 # wqsong 的帖子
Thanks a million
我明天早上做实验试一下 然后给大家汇报下结果! 回复 14 # leeking30 的帖子
祝顺利。。。
页:
[1]
2