声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1076|回复: 4

[编程技巧] 如何书写没有规则的循环

[复制链接]
发表于 2010-12-7 10:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如参数a=[0.1 -0.35 0.83],希望做一个循环保存a在不同数值时的图片,因为没有规则,我采用的方法是:

  1. a = [0.1 -0.35 0.83];
  2. for i = 1:length(a)
  3.     saveas(gcf,sprintf('a=第%d时的图片.bmp',i),'bmp');
  4. end
复制代码


然后得到图片后按照顺序将a的数值代入名称处。问题是:如果a仅有几个数值,那么这种方法可行;但如果a有几十甚至几百个没有规律的参数,那么更改名称将是一件十分耗时的事情。
请教大家,有没有什么方法能够简单处理这样的问题,使我不必进行名称的修改。
回复
分享到:

使用道具 举报

发表于 2010-12-7 10:35 | 显示全部楼层
那么更改名称将是一件十分耗时的事情。
不大明白是什么意思,是说程序运行会很慢吗?还是说你要把程序运行的结果手动更改文件名?
如果是嫌程序运行慢的话,可以试试如下改动的程序

  1. a = [0.1 -0.35 0.83];

  2. for i = 1:length(a)
  3.     figure;
  4.     set(gcf,'visible','off');
  5.     saveas(gcf,sprintf('a=第%d时的图片.bmp',i),'bmp');
  6.     close(gcf)
  7. end
复制代码
发表于 2010-12-7 13:41 | 显示全部楼层
不知所云,计算机是用来做重复性劳动的,而且计算的是把现实生活中的一些东西抽象后,处理的,如果真的如你所说,“没有规律”,那计算机业无能为力了,也许只是你没有把规律抽象出来。
如果文件名的确没有什么规律的话,建议你将文件名写在文件中,读取,然后用循环来保存。
ls的做法是不让图片显示出来,这样节省一些时间和资源,不知道是不是lz的意思
发表于 2010-12-7 15:33 | 显示全部楼层
LZ是想让该有的数值直接显示在档案名吗?
若是使用sprintf('a=第%d时的图片.bmp',a(i))即可
但有个问题是档案名允许有点或负号吗?
考量使用其他字符取代下亦可
 楼主| 发表于 2010-12-7 16:43 | 显示全部楼层
谢谢大家的回答,我搞懂了。可能是我阐述的不明白,如Happy99所说,我的要求通过

  1. sprintf('a=第%d时的图片.bmp',a(i))
复制代码
即可实现。只是之前思维较为固定,认为作循环时循环变量只能以本身或者算式的形式出现,实际上只要这个数是变量就行。另外,上面的内容要改一下,因为a是小数,所以需要改为

  1. sprintf('a=第%f时的图片.bmp',a(i))
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-16 19:16 , Processed in 0.058109 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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