【问题标题】:Matlab fopen command responds to string but not variable equaling same stringMatlab fopen命令响应字符串但不响应等于相同字符串的变量
【发布时间】:2011-04-01 17:45:57
【问题描述】:

我想知道是否有人可以对 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 时它会失败?

谢谢, 安德鲁

【问题讨论】:

  • 如果你使用[fid, message] = fopen(myjob)会得到什么错误信息?
  • 变量myjobchar类吗?

标签: matlab io fopen


【解决方案1】:

试试这个:

fid = fopen(deblank(myjob));

查看上面的输出格式,在显示myjob 的值之后似乎出现了一个额外的空行,这表明字符串末尾可能出现了换行符。此换行符将导致无法识别文件名,因此您可以使用函数 DEBLANK 从字符串中删除任何这样的尾随空格(或者您可以使用函数 @ 删除尾随 前导空格987654322@).

【讨论】:

  • 完美,顺便提一下空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 2012-09-11
  • 2019-01-11
  • 2018-08-16
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多