我有一个将图像打印到文件的脚本。我希望我打印的文件名是动态的 - 即我希望输出文件名取决于某些参数。有点像这样:
outputFileNames = {'1.0' '1.25' '1.75'};
%....some code to determine which outputFileName I should use
f=figure('visible','off');
%.....code to populate figure .....
fname = strcat('prefix', outputFileNames(index),'suffix');
print(f,'-dpsc2', '-append',fname)
我不断收到此错误:
Error using LocalCheckHandles (line 81)
Handle input argument contains non-handle value(s).
Error in print>LocalCreatePrintJob (line 366)
handles = checkArgsForHandleToPrint(0, varargin{:});
Error in print (line 160)
[pj, inputargs] = LocalCreatePrintJob(varargin{:});
Error in GenerateFieldPlots (line 57)
print(f,'-dpsc2', '-append',fname)
当我检查 fname 的值时prefix1.0suffix
(根据需要),当我检查index
I get的值时1
。如果我替换fname = strcat('prefix', outputFileNames(index),'suffix');
为fname = strcat('prefix', '1.0','suffix');
程序运行良好并输出到预期的文件名。
最后一次尝试理解这一点:
fname = strcat('prefix', outputFileNames(index),'suffix');
class(fname)
产量char
, 和
fname = strcat('prefix', '1.0','suffix');
class(fname)
也产量char
。
我的问题:
为什么会这样?我的字符串数组不是真正的字符串数组吗?
我该如何解决?IE,如何使输出文件的名称动态化?
出现上述问题是因为我有很多(> 5GB)数据需要转换为绘图并保存到文件中。最终,我需要将所有这些图都放在一个可以在任何 PC 上打开的文档中(比如……pdf!)。为了做到这一点,我将我所有的数字作为单独的页面附加到后记文件中,然后将 ps 转换为 pdf。不幸的是,ps 的空间效率不是很高,所以我最终得到了一个巨大的.ps 文件。以上是我尝试将一个巨大的 .ps 分解成几个较小的,我可以依次转换为 pdf(然后组合成一个 pdf)。这种方法非常复杂,但我一直找不到更好的方法。您对完成我的任务的更好方法有什么建议吗?
如果我遗漏了任何可能有用的细节,请告诉我。我是 Matlab 的新手,这是我关于 Matlab 的第一篇 SO 帖子!