2011-04-01 48 views
2

我想知道如果任何人都可以对以下问题的Matlab的fopen命令提供一些线索:Matlab的FOPEN命令响应字符串,但不等于变量相同的字符串

>> [stat myjob] = unix('echo $PBS_NODEFILE'); % gets PBS file name with allocated nodes 
>> myjob 

myjob = 

/opt/torque/aux//66058.crunch.local 


>> fid = fopen('/opt/torque/aux//66058.crunch.local') 

fid = 

    3 

>> fgetl(fid) 

ans = 

compute-9-2 

>> fclose(fid); 

我需要我有节点的名称在脚本中控制稍后的一些决定。如果我在交互式PBS工作中,以上方法可以工作,但大多数情况下,我需要在没有干预的情况下启动这些工作。当我尝试通过将存储的文件名来做到这一点:

>> fid = fopen(myjob) % returns invalid        

fid = 

    -1 

>> fgetl(fid)           
??? Error using ==> fgetl at 44 
Invalid file identifier. Use fopen to generate a valid file identifier. 

为什么,当我把在直接存储在myjob我能得到一个有效的标识符的值,但是当我把在myjob失败?

感谢, 安德鲁

+0

如果使用'[fid,message] = fopen(myjob)',你会得到什么错误信息? – 2011-04-01 17:48:57

+1

是'char'类的变量'myjob'? – Jonas 2011-04-01 17:59:56

回答

3

试试这个:

fid = fopen(deblank(myjob)); 

你的输出高于格式化的方式来看,似乎是myjob值之后出现一个额外的空行中显示,这表示在字符串的末尾可能会出现换行符。此换行会导致文件名不被识别,因此您可以使用功能DEBLANK删除任何类似于此的尾随空格(或者您可以使用函数STRTRIM删除尾随的前导空格)。

+0

完美的,很好的方式与空白。 – Sevenless 2011-04-01 20:12:08