matlab制作小工具,Matlab有用的小工具小技巧
转载地址:http://blog.sina.com.cn/s/blog_59cf672601015qmm.html
目录:
1.使图形窗口的默认text解释器为latex
2.图形窗口最大化
3.双坐标
4.计时
5.局部放大子图
6.Figure缩放字体
7.legend的Marker,line的属性操作(多legend,曲线减少marker数)
8.eps图片在latex中显示不全
9.坐标轴被遮住、保存后消失
10.使用一个目录下的全部或某类文件
11. [原创]eps图片中使用隐含信息做标注
12. 生成高质量透明矢量图
13. imagesc中对nan的处理
14. 数据量比较大时保存真矢量eps图
15. 坐标轴在图形中最大化
1.使当前图形窗口的默认text解释器为latex:
set(gcf,’DefaultTextInterpreter’,’latex’)
同理可推广:
set(0,’DefaultTextInterpreter’,’latex’)
但是legend的解释器似乎不受这个设置影响?(可以用’Interpreter’,’latex’来设置,但是感觉还是不爽。)
2.使图形窗口最大化:
set(gcf,’outerposition’,get(0,’screensize’))
3.双坐标
[hax,hl1,hl2]=plotyy([x1,y1,x2,y2],[x3,y3]);
这将在左边的坐标轴里画两条曲线(x1,y1)和(x2,y2),而右坐标轴画一条(x3,y3)
对于坐标轴的一些设置可以通过返回值来进行操作
set(gcf,’CurrentAxes’,hax(1))//把当前坐标轴调成左边的坐标轴
set(gca,’Ylabel’,’xxxx’)//然后就可以正常操作这个坐标轴,也可以使用hold on,增加曲线
4.计时
t0 = cputime; 程序;time=cputime-t0;
tic; 程序;toc;
t0 = clock; 程序;time = etime(clock, t0);
局部放大子图
有一个mmzoom的扩展,可以用鼠标选区域来放大,用起来也挺好,不过不利于精确控制。
其实,要自己画子图也不难:
myzoom([0.18,0.18,0.4,0.3],[x0,x1,y0,y1])
通过笔者自己写的简单函数来实现放大:
function myzoom(position,axiscale)
ha=get(gcf,’CurrentAxes’);
ha1=copyobj(gca,gcf);
set(ha1,’position’,position)
set(gcf,’CurrentAxes’,ha1)
axis(axiscale)
xlabel(”)
ylabel(”)
set(gcf,’CurrentAxes’,ha)
其中position是字图在当前图中的相对位置和大小,[x0,x1,y0,y1]是你要放大的坐标范围。
Figure缩放字体问题
让字体随figure的比例随你设置的缩放比例而变:
hf=figure;
fp=get(hf,’position’);
times=2.0; %自定义缩放倍数,
set(hf,’position’,[0 0 times*fp(3:4)]) %figure的缩放
set(gca,’FontSize’,times*get(gca,’FontSize’)) %gca上各种字体的缩放
xlabel(‘X’) %label在gca的fontsize设定之后写,不用再单独去设置它的字体
ylabel(‘Y’)
hc=colorbar;
set(hc,’FontSize’,times*get(hc,’FontSize’)) %假设有colorbar,实际上就是另外一个axes,同样设置它的字体
参考:http://blog.csdn.net/benjmzhu/article/details/7246870
看了这个这里才知道输出格式还可以Export Setup的,而set(findobj(‘FontSize’,10),’FontSize’,figure_FontSize);可以把所有的对象中字体大小为10的都改到想要的号啊!
7.legend的Marker,line等的操作
有这样一个情况,曲线太多,用线型来表示是不够的,只能用Marker、颜色结合线型来做。一般杂志还有要求,就是不用彩色也能说明每条曲线的意义,这样就只能用Marker结合线型来做。但是如果杯具的是你的数据点太多,导致marker太多,全画上的话根本看不清了。
解决这个问题最简单的方法是:……哈哈,直接调用现成函数(笔者在原作者的基础上做了一点修订,使之在横坐标和纵坐标范围相差数值上很大时也能用,大家也可以考虑一下log坐标的问题),当在使用legend后再使用这个函数,不会影响legend:
“nummarkers.m” http://pan.baidu.com/share/link?shareid=1072992811&uk=151290240
之前自己用的办法其实原理上是一致的,也是用线把不同颜色的曲线画一遍,然后每条曲线少用点Marker再画一遍,这样涉及到legend怎么展示,就是要对legend的线型、颜色进行自定义。
x=0:0.0001:2*pi;
y1=sin(x);y2=cos(x);
figure
hold on
box on
n=1000;
hl(1)=plot(x(1:n:end),y1(1:n:end),’rd’);
hl(2)=plot(x(1:n:end),y2(1:n:end),’go’);
lstr={‘sin(x)’,’cos(x)’};
plot(x,y1,’r’)
plot(x,y2,’g’)
[hleg chleg hplot hlabel]=legend(hl,lstr,’location’,’southwest’);%hplot,hlabel在R2013a里可以用~代替
set(chleg,’linestyle’,’-‘)
比较不解的是对chleg里包含的对象分别操作的时候:比如set(chleg(1),’linestyle’,’.-‘),这样的操作用get(chleg(1))来看是正常的,但是图上却没有反应!!!
8.eps图片在latex中显示不全的问题。
表现为eps图片用latex插入,会显示不全,出现在pdf里面看到的图是一部分被截掉的情况。
原因在于eps图片papersize的设置得太小,图片超过了paper的范围。
(笔者也不太明白bounding box和papersize各是什么,在matlab里面还有paperposition设置,这个和bounding box是对应的么?papersize设成A0,但是打印出来的图却是紧凑的,尺寸并不是这个papersize啊!)。
这里给笔者使用命令的解决方案:
set(gcf,’PaperType’,’A0’)
set(gcf,’PaperPositionMode’,’auto’)
print(‘vtth_vt_vc_59_p’,’-depsc’);
根据matlab的帮助文件,最好在设置PaperTyper前设置一下PaperUnit。当然PaperSize是可以自己设置的(PaperType给了几个默认设置而已:http://en.wikipedia.org/wiki/Paper_size#C_series)。
set(gcf, ‘PaperUnits’, ‘inches’);
set(gcf, ‘PaperSize’, [5 7]);
参考:
http://blog.sciencenet.cn/blog-533656-428329.html
http://blog.renren.com/share/236157660/13151799720
http://nibot-lab./73290.html
9.坐标轴被遮住、保存后消失
set(gca,’Layer’,’top’) %坐标轴被遮
set(gca,’LineWidth’,2) %保存成png图片后坐标轴消失了,可能是由于坐标轴太细造成的(困扰我许久,比如用patch设置透明后坐标轴消失,用pcolor后坐标轴消失)
使用目录下的所有或一类文件
files=dir(‘*.txt’);
for i=1:length(files)
a=load(files(i).name);
end
注意linux下直接用dir命令会得到所有文件和目录(files.isdir=1),目录中还会含有当前目录“.”和上级目录“..”。
自己写的话,linux下可以考虑用system命令结合regexp(str,’\t+\s+’,’split’),还是挺麻烦,不如直接用dir的方便。
[原创]eps图片使用隐含信息标注
因为eps图片开头有一些信息描述文件名、标题、创建者等信息,所以我们可以把一些不需要在图形中显示但是又需要的信息全部放到eps文件隐含的注释信息里面。(这样信息不会轻易随文件名更改而改变。这有没有让你想到基因序列里面的外显子和内含子呢?说不定人类的基因里的内含子还真是创造者植入的注释或者后门呢,哈哈。。。)
那么怎么放进去呢?其实eps是基于文本的,把它当文本文档打开就能进行编辑!那么在matlab里的话,怎么做呢?把要写的信息放到一个字符串中,然后在eps文件中替换或添加部分注释信息!
目前还不怎么熟悉matlab的字符串替换操作,所以目前我只放一个Linux系统中用系统的sed命令来添加信息的例子:
info=’Hello, World!’;
eval_r([‘!sed -i ”s/(\%\%Title.*)/\%\%’,info,’/g” test.eps’])
这样,用图片查看器打开后,查看文档的“属性”时,你就可以看到它的标题这一项变成了“Hello, World!”。
生成透明高质量矢量图(未完全测试)
12.1 色图里如何把含有NaN的数据设置成白色,并保证输出图的质量。
http://www.mathworks.com/matlabcentral/newsreader/view_thread/140607
这里面第3个是最好的办法,虽然复杂一点,但是能够保证数据显示正确,而且输出的图体积小质量好。
pcolor或set(h,’alphadata’,~isnan(C))的方法,都会因为设置了透明而使生成的eps图片即大又质量不好:坐标轴丢失、文字锯齿。
12.2 三维图
http://www.mathworks.com/matlabcentral/newsreader/view_thread/158841
print -depsc2 -painters test3.eps可以解决部分三维图输出质量不高的问题,但是输出有透明数据的图时会有问题?
13 imagesc对nan的处理(有空再考虑完美解决办法)
为什么MATLAB不在imagesc中直接默认颜色为白色呢?
pcolor是这样的,imagesc却不一样,怎么考虑的?不能理解!
13.2 最简单的一句(如果你保存成eps图片,可能会发现这是一场悲剧):
h=imagesc(C)
set(h,’alphadata’,~isnan(C))
14 数据量比较大时保存真矢量eps图
matlab遇到比较大的数据量时,即使想保存为eps矢量图,实际给出来的却是伪矢量图,先当成位图做了一个转换,然后再输出为eps图。这样保存的eps图片,一是质量差,二是其中的文字插入到latex中已经不能编辑了。
使用下面的方法保存的不会有问题:
print(gca,’-depsc2’,’painters’,filename)
参考:http://www.voidcn.com/article/p-fzeoutiq-btq.html
(这里还有一个扩展export_fig文件和savesvg文件,貌似很强大,没有尝试)
坐标轴在图形中最大化
tightInset = get(gca, ‘TightInset’);
position(1) = tightInset(1);
position(2) = tightInset(2);
position(3) = 1 - tightInset(1) - tightInset(3);
position(4) = 1 - tightInset(2) - tightInset(4);
set(gca, ‘Position’, position);
saveas(h, ‘WithoutMargins.pdf’);
来源地址:http://www.voidcn.com/article/p-uzlcdcac-bsq.html
matlab制作小工具,Matlab有用的小工具小技巧相关推荐
- 使用Matlab制作的视频媒体批量重命名工具
视频媒体批量重命名工具 1.Abstract 编程语言:Matlab.python 思路:利用python获取视频创建时间,通过Matlab实现对视频关键帧的读取与显示,以及对于用户打标信息与 ...
- matlab制作签名图像,Matlab之画出你的签名
我们来做一些有意思的事情,通过外界的扫描仪或者照相机之类的,获取你写在纸上的签名,图片一般保存为jpg格式.然后用matlab把图片中的签名通过某种采样方法来采取尽可能少的点来用贝塞尔曲线把你的签名勾 ...
- 小波包matlab,小波分析(第三讲)小波包二代小波Matlab工具使用
<小波分析(第三讲)小波包二代小波Matlab工具使用>由会员分享,可在线阅读,更多相关<小波分析(第三讲)小波包二代小波Matlab工具使用(82页珍藏版)>请在人人文库网上 ...
- matlab软件中GUI界面开发学习——双色球选择小工具
matlab软件中GUI界面开发学习--双色球选择小工具 先上一张界面截图: 特别说明:只是最近对双色球比较感兴趣,所以找了一个实际的项目依据帮助我学习GUI工具,小工具的相关条件仅代表个人想法,选择 ...
- 经验小波MATLAB,EWT 新开发出来的经验模态小波变换工具及其例程。 matlab 276万源代码下载- www.pudn.com...
文件名称: EWT下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 1558 KB 上传时间: 2017-03-01 下载次数: 6 提 供 者: 暗夜星尘 ...
- matlab 程序 收缩,基于MATLAB的小波收缩去噪方法研究(程序)
基于MATLAB的小波收缩去噪方法研究(程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15400字,程序,答辩PPT) 摘 要 信号在采集.传输和获取的过程中难免会受到各种噪声的干扰 ...
- 认识小波——MATLAB中国的讲座(笔记)
第一部分:什么是小波 https://www.bilibili.com/video/BV1xu411R7yK 现实世界中的数据或信号经常表现出缓慢变化的趋势或者有瞬变的振荡 Real world da ...
- bp神经网络mallat小波matlab,小波神经网络原理及其应用汇总.ppt
小波神经网络原理及其应用汇总,小波神经网络原理,小波变换原理与应用,神经网络的原理及应用,小波神经网络matlab,小波神经网络预测代码,小波神经网络模型,小波神经网络预测程序,小波神经网络预测,小波 ...
- matlab小波分析毕业设计,基于matlab的小波去噪分析毕业论文
基于matlab的小波去噪分析毕业论文 基于 matlab 的小波去噪分析在图像处理中的应用研究 摘 要 本文首先介绍了小波变换的发展状况以及其基本理论知识,包括连续小波变换和离 散小波变换:接着对基 ...
- 2021年春季学期-信号与系统-第五次作业参考答案-第十一移小题—MATLAB
本文是 2021年春季学期-信号与系统-第五次作业参考答案 中的小题解答. ▌第十一题:MABLAT 在MATLAB中,根据矩形周期脉冲信号傅里叶级数分解也锯齿波傅里叶级数分解的公式,绘制前N项级数叠 ...
最新文章
- android区块链 钱包_区块链研究实验室|从Android调用区块链智能合约
- 一文带你了解光纤收发器和交换机之间的区别
- 基于 KubeVela 的 GitOps 交付
- CCNA课堂练习三:标准访问控制列表和扩展访问控制列表的区别
- GRE难句典型结构2
- 学生专用计算机如何打游戏,电竞专业学生日常:白天学语数外计算机,晚上才打游戏...
- 分级显示HTML,SSM框架下,以tree结构分级显示数据
- SAP成都研究院数字创新空间小伙伴们在2020 SAP上海DKOM
- python图片隐写_Lsb图片隐写
- 双向链表VS单向链表
- android console命令,我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2....
- 阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年
- http请求POST方式发送获得返回值
- ehcache版本冲突
- 区块链应用 | 区块链的火爆会一直持续吗?
- 数据库系统概论第五版(第 2 章 关系数据库)习题答案
- GBase数据库安装前一般检查
- dht磁力链php,基于 DHT 网络的磁力链接和BT种子的搜索引擎架构
- python正则表达式快速入门_Python 正则表达式入门
- 写给Gallen1983