【问题标题】:fopen file already fopened through input command in matlabfopen 文件已通过 matlab 中的输入命令打开
【发布时间】:2014-05-13 18:00:41
【问题描述】:

我无法打开以前使用 'Input' 打开的具有不同 fid 的文件。

例子:

fid1=fopen((input('Video: ')),'r');
fid2=fopen((input('Save as: ')),'w');
...
...
fid3=fopen('','r'); % Here I want to open the input video same as fid1

我不知道如何请求返回值,在这种情况下是输入的名称。

在声明fid1后输入fid3=fid1没有帮助我。

不想要求再次输入姓名(即fid3=fopen((input('Video: ')),'r');)。

【问题讨论】:

  • 所以如果文件已经用以前的文件指针打开了,你不想打开它吗?
  • 我在函数中使用脚本来做其他事情,我需要输入相同视频的文件标识符(可以是同一文件夹中的各种视频文件),由于我不能使用相同的指针到我使用的迭代和集成 matlab 函数(如reshape
  • 老实说,您并不清楚为什么首先需要这样做。

标签: matlab input fopen


【解决方案1】:

要执行您想做的事情,您需要在某处捕获并存储文件名。我真的不认为可以从文件指针中恢复信息。

【讨论】:

  • 是的,这就是我实际所做的,比如创建临时文件之类的东西。但这只是糟糕的编码,我不想这样做..
  • 也许您可以创建一个可以包含该附加信息的结构。但是由于文件指针包含特定访问的信息(文件中的位置等),因此您确实不能将相同的文件指针用于 2 个不同的事物。您不需要临时文件,只需存储返回的文件名。一个文件一次可以被多个文件指针访问(如果你小心的话)。
  • 来自文档:filename = fopen(fileID) 返回之前对fopen 的调用在打开fileID 指定的文件时使用的文件名。
  • 不是在这种情况下,但在非常相似的情况下,我必须使用临时文件。我知道我需要另一个指针,因此是 fid3,但我不能在一开始就将它用作 fid3=fid1声明fid1,我不知道还有什么(除了再次要求输入,我不想要)
  • @excaza 我不认为这符合我认为你的意思,或者至少当你有Input... 但尽管如此,我试过了,它返回 '' 并创建新变量
猜你喜欢
  • 2016-04-03
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多