这可能是一个简单的问题,但我有一些文件和数据。将它们中的每一个打印到'-dpng'文件后,我只想查看该图并将它们复制到别处。但是,打开文件,我看到的只是“导入向导”。我点击“完成”,没有任何反应。这是我的代码:
files = dir('*.csv');
for file = files'
lab5 = csvread(file.name, 9)
lab5(:,1) = log10(lab5(:,1))
plot(lab5(:,1),lab5(:,2))
print(strcat(file.name,'plot'), '-dpng')
end
我试图通过使用savefig来避免print(),但由于某种原因,savefig给了我一个模糊的错误。只有打印工作,但我不知道如何查看输出。
答案 0 :(得分:2)
您将图像保存为filename.csvplot
,预览不接受该图像为有效图像文件。
例如:
% Generate dummy file
fID = fopen('blah.csv', 'w');
fclose(fID);
% Recreate print job
files = dir('*.csv');
plot(1:10)
fname = strcat(files(1).name, 'plot');
print(fname, '-dpng');
这给了我们:
fname =
blah.csvplot
为什么.png
没有附加到文件名?根据{{3}}的文档:
如果文件名不包含扩展名,则
解析扩展名的文件名输入(例如,前缀为.
的内容),如果找到扩展名,则不附加扩展名。在这种情况下,传递给print
的文件名具有.csvplot
扩展名。这可能是意料之外的,但它确实有意义,文件扩展名实际上并没有控制文件本身的任何内容;您可以将文件另存为image.finderpleaseopen
,并使其仍为有效的PNG文件。 Finder太顽固了,没有被强制打开它,因为它不是一个已知的,支持的文件扩展名。
要解决此问题,您应该使用正确的文件扩展名保存文件。有两种方法可以做到这一点,添加正确的扩展程序或删除不需要的扩展名,例如print
或fileparts
,让print
为您处理。
例如:
% blah.csvplot.png
fname = strcat(files(1).name, 'plot', '.png');
print(fname, '-dpng');
% blahplot.png
[~, filename] = fileparts(files(1).name);
fname = strcat(filename, 'plot');
print(fname, '-dpng');
regexprep
没有为Finder生成有效输出,因为如果没有.fig
扩展名,它就不会产生任何输出:
如果指定的文件名不包含
.fig
文件扩展名,则MATLAB会附加扩展名。savefig
不接受其他文件扩展名。
*.fig
文件不是图像文件,无法由finder本地打开。