【问题标题】:Matlab publish - Want to use a custom file name to publish several pdf filesMatlab 发布 - 想用自定义文件名发布几个pdf文件
【发布时间】:2014-01-22 16:52:17
【问题描述】:

我有几个数据日志文件(这里:34),我必须计算一些特定的值。我编写了一个单独的函数以将计算结果发布在 pdf 文件中。但是我只能一个接一个地发布,所以发布所有34个文件需要一段时间。

现在我想通过循环实现自动化 - 导入数据、计算值并在新的 pdf 文件中发布每个日志文件的结果。最后我希望每个日志文件有 34 个 pdf 文件。

我的问题是,在发布过程中我找不到重命名 pdf 文件的方法。 pdf 文件始终以计算值的脚本命名。显然,pdf在循环中被覆盖。所以最后一切都被计算出来了,但我只有上次计算的日志文件中的 pdf。


有这个 hacky 解决方案来更改 Matlab 发布脚本,但由于我没有管理员权限,我不能使用它:

“这真的很老套,但我会修改发布以接受新的选项前缀。替换第 93 行

[scriptDir,prefix] = fileparts(fullPathToScript);

if ~isfield(options, 'prefix')
    [scriptDir,prefix] = fileparts(fullPathToScript); 
else
    [scriptDir,~] = fileparts(fullPathToScript);
    prefix = options.prefix; end

现在您可以将 options.prefix 设置为您想要的任何文件名。如果你想成为真正的硬核,也可以对 supplyDefaultOptions 和 checkOptionFields 进行适当的修改。”

有什么建议吗?

提前致谢, 马丁

【问题讨论】:

  • 与其显示您不能使用的代码,不如在您循环的地方显示代码并调用发布函数可能会有所帮助,这样我们就可以使用您拥有的东西。
  • 源代码没有用,因为这是一个逻辑问题。更容易解释我想要做什么。再次感谢您的帮助!

标签: matlab pdf rename publish


【解决方案1】:

这是使用movefile 在每次迭代中重命名生成的已发布 PDF 的一个想法:

for i = 1:34
    file = publish(files(i)); % Replace with your own command(s)
    [pathStr,fileName,ext] = fileparts(file);
    newFile = [pathStr filesep() fileName '_' int2str(i) ext]; % Example: append _# to each
    [success,msg,msgid] = movefile(file,newFile);
    if ~success
        error(msgid,msg);
    end
end

还使用了filepartsfilesep。有关重命名和移动文件的其他方法,请参阅 this question

【讨论】:

  • 非常感谢您的快速响应。它在循环中与“movefile”一起使用。因此,每次创建 pdf 文件时,它都会在计算下一个文件的值之前立即重命名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2018-09-08
  • 2023-01-17
  • 1970-01-01
相关资源
最近更新 更多