citywander 发表于 2009-3-8 16:55

原帖由 sogooda 于 2009-3-8 08:38 发表 http://www.chinavib.com/forum/images/common/back.gif
你会发现用word根本就不能打开同一个文件两次。应该就是防止出现修改的冲突这样的问题。
哎,刚刚试了一下,的确是的!那就是我举错例子了,呵呵

[ 本帖最后由 ChaChing 于 2009-3-8 17:09 编辑 ]

citywander 发表于 2009-3-8 16:58

原帖由 sogooda 于 2009-3-8 08:43 发表 http://www.chinavib.com/forum/images/common/back.gif
.asv是matlab自动生成的自动保存文件,目的是在编辑之后可以执行undo操作;当然,在原来的m文件被误删除的情况下也可以用来当做备份。
.asv可能不是每次保存都会生成的,可能比如修改一两次之后就会生成asv了,以后 ...
哦,明白了。我是一直以为MATLAB是对这个.asv在操作,所以认为即使修改了,也不会影响它仍按照原来的运行。看来是错了。。。PS.我一直没有看懂你的头像上是个什么东东在趴着?有点像一只很威武的大狗,可仔细看看又不太像。。。

[ 本帖最后由 ChaChing 于 2009-3-8 17:10 编辑 ]

citywander 发表于 2009-3-8 17:05

原帖由 ChaChing 于 2009-3-8 11:02 发表 http://www.chinavib.com/forum/images/common/back.gif
具体个人不很确定! 或许也与LZ改那些部分有关系!
我的经验与印象是, 当你下命令执行m script时, matlab好像是将所有指令存至一个buffer等待执行!
所以若LZ只更动script的内容, 应该是不会跑新参数的, 也就是LZ的结 ...


看懂了,总结一下就是四个字:我得重跑。。。555555555555555555555555
我的程序就是很耗时的那种,要运行20个不同的数组,每个数组最短的要运行十个小时,最长的要运行二十几个小时。我是在运行了1、2个之后,发现两个都保存下来了,就一直没在意。直到某天运行到中间时,发现我在跑的两个程序只保存下来了一个文件,当时第一个感觉就是:难道一直都有交叉覆盖?那个冷汗啊,要知道,我重跑一下所有的又得耗时数天啊。。。5555555555555

[ 本帖最后由 ChaChing 于 2009-3-8 17:11 编辑 ]

citywander 发表于 2009-3-8 17:13

原帖由 ChaChing 于 2009-3-8 11:02 发表 http://www.chinavib.com/forum/images/common/back.gif
具体个人不很确定! 或许也与LZ改那些部分有关系!
我的经验与印象是, 当你下命令执行m script时, matlab好像是将所有指令存至一个buffer等待执行!
所以若LZ只更动script的内容, 应该是不会跑新参数的, 也就是LZ的结 ...
等等,ChaChing, 我就是要问这个问题。You get the very point! 激动中。。。只是我也不知道我每次动的是script的内容,还是m function 的内容。我把我的步骤说清楚点吧,就是我打开一个MATLAB程序,伴随打开的还有我上次打开的editor,然后我就在editor中让我要运行的,m程序(假设是expe.m)save and run(预计要run十个小时). 接着我又打开了一个MATLAB,editor也伴随打开了,然后我修改了expe.m中的参数,点save and run。那你说我这是在动script的内容还是在动.m function的内容?我还没有听说过m script这个名词,先去搜搜看。万般地祈祷我动的是m script啊。。。

[ 本帖最后由 ChaChing 于 2009-3-8 17:16 编辑 ]

ChaChing 发表于 2009-3-8 17:15

回复 18楼 citywander 的帖子

所以LZ是使用m-function, 而save在此m-function内!?
那就合理些, 但不幸的是没办法了!

[ 本帖最后由 ChaChing 于 2009-3-8 17:32 编辑 ]

ChaChing 发表于 2009-3-8 17:36

回复 19楼 citywander 的帖子

检查expe.m第一行有无function expe(...)?
若有就是m-function, 可能就有问题了!
但若是m script, "有时发现文件夹中只保存下来x235"又很矛盾!?

乾脆上传LZ的程序, 晚点我看看! 现在没空了!

sogooda 发表于 2009-3-8 19:00

回复 19楼 citywander 的帖子

m script是脚本文件;function是函数文件。
btw:那是一只猫。

citywander 发表于 2009-3-8 21:50

。。。。。。。。。。。。

原帖由 ChaChing 于 2009-3-8 17:36 发表 http://www.chinavib.com/forum/images/common/back.gif
检查expe.m第一行有无function expe(...)?
若有就是m-function, 可能就有问题了!
但若是m script, "有时发现文件夹中只保存下来x235"又很矛盾!?

乾脆上传LZ的程序, 晚点我看看! 现在没空了!
ChaChing,谢谢你的热心!
我的第1行comment了,所以虽然写了function expe()但和没写没什么区别。那这样就算是m script吗?是不是这样就算是全局变量,就像在MATLAB窗口运行一样,所以没有影响?我把程序始末贴出来如下:
% function real_Ci=relax_label_withCC()
% the difference between the function relax_label and relax_labelwithCC is the latter
% uses Corrcoef to compute the Rx
% Author Qq WU
% Date09/01/22
clc
clear all
tic
fid=fopen('SV40.m','r');
........................
........................
save x234 meanYes_prob Prob %should change the name of the save file when change the parameters...
toc

根据我这许多次运行下来的结果看,大部分时候是两个运行的MATLAB能各自保存下各自的文件,但偶尔出现了只保存一次的情况。所以即使ChaChing你运行我的程序,只保存一次的偶尔情况也许也并不会在你那儿出现吧。我现在就是不太确定,会不会即使两个文件都保存下来了,里面的参数还是不对应的,比如改过的参数却对应了原来的名字保存了,那就乱套了。

citywander 发表于 2009-3-8 22:06

.........................

原帖由 sogooda 于 2009-3-8 19:00 发表 http://www.chinavib.com/forum/images/common/back.gif
m script是脚本文件;function是函数文件。
btw:那是一只猫。
特地去查了一下什么叫做脚本文件。。。原谅我,这个名词太过专业。。。百度解释如下:脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。
看了一下解释,还是没看懂。。。这个当中专有名词更多。。。。。。。早知道应该去辅修计算机专业。。。不过楼上的ChaChing的解释能理解一点,所谓script就是没有加function......的文件,是MATLAB运行时临时调用当成全局变量的,对不对?
又仔细看了一下,要不是你提醒我估计下辈子都看不出这是一只掩面哭泣的猫咪!。。。我一直把猫耳朵那个地方当成是大狗的嘴巴来着。。。。。。。
谢谢你的回答,先去slepp了。。。

ChaChing 发表于 2009-3-8 23:32

LZ的程序是m script, matlab就可以查function/script两者的差异了!
LZ的程序很长吗? 因若script很大的话, 就不怎麽确定了!
其实15F说的仅是个大概情况, 具体应看程序怎麽写及修改的部分!
原则上, 个人认为若两者都有存, 就应该是可靠的结果!
若仅存後者(虽然百思不解!), 我可能就会重跑了!

friendchj 发表于 2009-3-8 23:39

脚本文件和函数文件:
M文件有两种形式 :脚本文件(ScriptFile)和函数文件(Function File )
。这两种文件的扩展名,均为“ . m” 。
(1) M脚本文件的特点
脚本文件的构成比较简单,只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB指令集合; 脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB基本工作空间(Base workspace)中。只要用户不使用清除指令(clear), MATLAB指令窗不关闭,
这些变量将一直保存在基本工作空间中。
(2) M函数文件的特点
从形式上看 ,与脚本文件不同 ,函数文件的笫一行总是以 “function”引导的“函数申明行”;从运行上看 ,与脚本文件运行不同 ,每当函数文件运行, MATLAB就会专门为
它开辟一个临时工作空间,称为函数工作空间( Function workspace) 。当执
行文件最后一条指令时 ,就结束该函数文件的运行,同时该临时函数空间及其
所有的中间变量就立即被清除。

citywander 发表于 2009-3-9 20:10

回复 25楼 ChaChing 的帖子

哦,明白。我现在也是先重跑只存了一个的那个。心里认为存了两个的那个是可靠的,不过还是有隐忧啊。谢谢你了。。。

citywander 发表于 2009-3-9 20:26

回复 26楼 friendchj 的帖子

嗯,清楚了。难怪每次调用子函数时子函数中的变量是不会显示在workspace中的呢,原来是因为MATLAB运行完子函数后自动清楚了所有的啊。。。谢谢! 好人会有好报的~~
页: 1 [2]
查看完整版本: 开两个MATLAB运行同一个程序会出现交叉操作吗?