2011-04-01 45 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