设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1794|回复: 0

matlab 实现绘图和命令行输出自动保存

[复制链接]

20

主题

159

金钱

262

积分

入门用户

发表于 2019-11-11 16:44:52 | 显示全部楼层 |阅读模式

matlab 实现绘图和命令行输出自动保存
绘图自动保存
对于图片而言,只需要灵活使用 saveas 命令,该命令语法格式如下:
  1. saveas(fig,filename)
  2. saveas(fig,filename,formattype)
复制代码


请看下例:
  1. close all
  2. clear
  3. clc

  4. x = [2 4 7 2 4 5 2 5 1 4];
  5. bar(x);
  6. saveas(gcf,'Barchart.png')
复制代码


可以在当前目录下得到 Barchart.png 文件。但是这种做法有个问题,就是图片是闪过之后自动关闭并保存。如果我们生成的图片很多,一闪一闪输出图片,不仅会另人感觉不适,并且会降低程序效率。

那怎么实现不显示图片,而自动保存呢?其实只需要加一行代码关闭图形显示就可以了。如下:
  1. close all
  2. clear
  3. clc

  4. figure('Visible', 'off');

  5. x = [2 4 7 2 4 5 2 5 1 4];
  6. bar(x);
  7. saveas(gcf,'Barchart.png')
复制代码



命令行输出自动保存
可以使用 diary 命令实现该功能,例子如下:
  1. close all
  2. clear
  3. clc

  4. diary('myOutputTest.txt')
  5. for i = 1:5
  6.     disp(i);
  7. end

  8. diary off
复制代码


可以看到当前目录的文件夹下生成了如下文件:
1.jpg

但是上面的这个程序有个问题,如果你重复运行这个程序,那么他会反复地将结果写入制定的文件,这并不是我们所希望的。这是如下编写代码:
  1. close all
  2. clear
  3. clc

  4. filename = 'myOutputTest.txt';
  5. % 检测当前目录下是否存在指定
  6. temp = exist(filename,'file');
  7. % 如果当前目录下存在指定文件,则删除该文件
  8. if temp == 2
  9.     delete(filename);
  10. end
  11. diary('myOutputTest.txt')
  12. for i = 1:5
  13.     disp(i);
  14. end
  15. a = dir;
  16. diary off
复制代码


这样文件中只会保留最新运行程序产生的结果。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表