用MATLAB生成达到出版质量的图形-export_fig.zip本帖最后由stellari于2013-5-2816:03编辑MATLAB的绘图功能非常强大,但是有两个突出的问题:1、导出的图片质量不高;
2、有时导出图片和figure中实际所见并不一致。
所以导致大家正式发表专业文章时不经常用MATLAB作为首选的绘图软件。
其实,只要解决了上面的两个问题,MATLAB也是可以生成能够达到出版水平的图形的。
简介export_fig(见附件)就是一个能够解决上述问题的工具包。
首先,问题1的主要原因是MATLAB的默认绘图渲染器较为原始,所以画出的线条都有很明显的锯齿。
而用export_fig导出的图片,所有的线条和文字都是经过抗锯齿处理的,所以视觉效果极佳;
至于问题2,export_fig会严格按照figure上显示的内容去导出,是真正意义上的所见即所得。
而且用export_fig导出的图片不会有MATLAB默认导出时那么大的白边,而是保证白边的范围仅能容纳坐标轴和title,xlabel,ylabel,这样使得图片的尺寸减小,排版更方便。
下两图选得虽然不是很有代表性,但是依然可以看出export_fig截出的图中白边大量减少,并且有非常先进的抗锯齿处理(比如,上图的红线在1-2范围内有很明显的锯齿,下图则几乎没有。
坐标轴上的数字也是如此)。
背景中的网格也由虚线变成了“淡实线”,更符合现代制图的审美观。
figure中直接选择save的结果:test1_1.pngfigure中选择save的保存结果export_fig的结果:test2_2.pngexport_fig的保存结果使用方法export_fig的使用方法很简单,解压附件中的文件,然后将得到的所有文件放入某目录中,再将该目录添加至MATLAB的搜索路径中。
导出图片时,输入export文件名即可将当前figure中的图输出至文件中。
export_fig能够自动识别文件名的扩展名,并保存成相应的格式。
注意如果需要导出pdf或eps格式的话,需要下载并安装ghostscript,具体可以参见export_fig的发布页http://www.mathworks.com/matlabc...nge/23629-exportfig题外话其实不要小看MATLAB。
MATLAB其实隐藏了一个非常强大的绘图模式:HG2。
这个模式平时是隐藏的,只能在MATLAB启动时通过附加参数的形式开启,即可以将MATLAB的快捷方式中的指向目标由"...\...\MATLAB\R2013a\bin\MATLAB.exe"改为"...\...\MATLAB\R2013a\bin\MATLAB.exe"-hgVersion2(注意hgVersion和2之间有一个空格)然后使用这个快捷方式打开MATLAB。
在界面上没有任何区别,但是当你画出图之后,你会发现一切都不同了。
(下二图转载自undocumentedmatlab.com,左图为普通模式,右图为HG2模式)HG1_plot.png普通(HG1)模式(无责任转载自undocumentedmatlab.com)HG2_plot.pngHG2模式(无责任转载自undocumentedmatlab.com)版本在2010以上,感兴趣的同学不妨一试(版本更早其实也可以尝试)。
当然目前HG2模式尚不稳定,所以并没有向一般用户公开。
不过这很可能是下一代MATLAB的发展方向,说不定R2014a的默认绘图模式就是HG2!总结目前公认最好的图片导出方案还是export_fig。
这个工具包在MATLABCentral上一直下载量排行第一。
这个工具包可以完全替代MATLAB自己的图片导出功能,强烈推荐大家使用。
我本人现在正在写的一篇文章就全部使用export_fig,而没有使用其他任何的绘图软件。
HG2模式应该是MATLAB的未来发展方向,大家可以先尝个鲜。
很有可能在不久的将来就能够在MATLAB中直接生成这种高质量的图像了。
2024/5/23 14:45:49 26KB matlab
1
不怎么实用,希望各位批评指导,相互学习clearall,closeall,TestDatabasePath=uigetdir('E:\我的大学','Selecttestdatabasepath');%自己设置地址prompt={'Entertestimagename:'};dlg_title='fingerRecognitionSystem';num_lines=1;def={'1'};TestImage=inputdlg(prompt,dlg_title,num_lines,def);TestImage=strcat(TestDatabasePath,'\',char(TestImage),'.bmp');im=imread(TestImage);ticI=imresize(im,[200200]);figure(1),subplot(131),imshow(I),title('原图');set(gcf,'position',[11600600]);level=graythresh(I);J=im2bw(I,level);figure(1),subplot(132),imshow(J),title('二值图');
2024/4/30 20:53:47 4.47MB 指纹匹配 特征提取 预处理
1
是USB最新规范3.0的规范包,里面包含有1.ECN003(ResetPropagation)Figure.pdf2.ECN001(LDN120508).pdf3.ECN002_CabCon-1_.pdf4.ECN003(ResetPropagation).pdf5.Q1-09USB3_Errata.pdf6.USB30(11132008)-final.pdf7.USB3.0_AdoptersAgreement_Final_111308.pdf
2024/4/25 14:52:31 3.81MB USB 3.0 spec 规范
1
%线性调频信号的实部和虚部及时域脉压输出clearall;clc;T=16e-6;B=5e6;K=B/T;fs=6*B;Ts=1/fs;N=T/Ts;t=-T/2:T/(N-1):T/2;s=exp(j*pi*K*t.^2);y=conv(s,conj(s));len=length(y);t1=-T/2:T/(len-1):T/2;figure;plot(t,real(s));gridon;axis([-1.2e-51.2e-5-11]);xlabel('时间(s)');ylabel('幅度');title('LFM信号的I路');figure;plot(t,imag(s));gridon;axis([-1.2e-51.2e-5-11]);xlabel('时间(s)');ylabel('幅度');title('LFM信号的Q路');figure;plot(t1,20*log10(abs(y)/max(abs(y))));gridon;axis([-1.2e-51.2e-5-900]);xlabel('时间(s)');ylabel('幅度(dB)');title('时域脉压后的波形(未加权)');subplot(311);plot(t,real(s));gridon;xlabel('time(s)');ylabel('amplitude(dB)');title('realpartofLFM:T=16us,B=4MHz');axis([-T/2T/2-11]);subplot(312);plot(t,imag(s));gridon;xlabel('time(s)');ylabel('amplitude(dB)');title('imagepartofLFM:T=16us,B=4MHz');axis([-T/2T/2-11]);subplot(313);plot(t1,20*log10(abs(y)/max(abs(y))));gridon;axis([-1.2e-51.2e-5-900]);xlabel('时间(s)');ylabel('幅度(dB)');title('时域脉压后的波形(未加权)');
2024/3/14 17:47:39 2KB lfm match filter
1
对matlab中平滑处理做了详细的介绍yy1=smooth(y,30); %利用移动平均法对y做平滑处理>>figure; %新建一个图形窗口>>plot(t,y,'k:'); %绘制加噪波形图>>holdon;>>plot(t,yy1,'k','linewidth',3); %绘制平滑后波形图>>xlable('t');>>xlabel('t');>>ylabel('moving');>>legend('加噪波形','平滑后波形');
2024/2/23 10:50:33 133KB smooth平滑
1
昨天下载了http://download.csdn.net/detail/du18254261003/5229769这个资源,由于版本问题,不能直接运行。
然后对其进行了改进,在x64系统上运行通过。
环境说明:win7x64;matlab2016;VS2015。
最后,感谢原帖。
2023/7/10 9:48:12 1.4MB MATLAB C#
1
简单的遗传算法,计算函数最值.functionga_main()%遗传算法程序%n--种群规模%ger--迭代次数%pc---交叉概率%pm--变异概率%v--初始种群(规模为n)%f--目标函数值%fit--适应度向量%vx--最优适应度值向量%vmfit--平均适应度值向量clearall;closeall;clc;%清屏tic;%计时器开始计时n=20;ger=100;pc=0.65;pm=0.05;%初始化参数%以上为经验值,可以更改。
%生成初始种群v=init_population(n,22);%得到初始种群,22串长,生成20*22的0-1矩阵[N,L]=size(v);%得到初始规模行,列disp(sprintf('Numberofgenerations:%d',ger));disp(sprintf('Populationsize:%d',N));disp(sprintf('Crossoverprobability:%.3f',pc));disp(sprintf('Mutationprobability:%.3f',pm));%sprintf可以控制输出格式%待优化问题xmin=0;xmax=9;%变量X范围f='x+10*sin(x.*5)+7*cos(x.*4)';%计算适应度,并画出初始种群图形x=decode(v(:,1:22),xmin,xmax);"位二进制换成十进制,%冒号表示对所有行进行操作。
fit=eval(f);%eval转化成数值型的%计算适应度figure(1);%打开第一个窗口fplot(f,[xmin,xmax]);%隐函数画图gridon;holdon;plot(x,fit,'k*');%作图,画初始种群的适应度图像title('(a)染色体的初始位置');%标题xlabel('x');ylabel('f(x)');%标记轴%迭代前的初始化vmfit=[];%平均适应度vx=[];%最优适应度it=1;%迭代计数器%开始进化whileit<=ger%迭代次数0代%Reproduction(Bi-classistSelection)vtemp=roulette(v,fit);%复制算子%Crossoverv=crossover(vtemp,pc);%交叉算子%Mutation变异算子M=rand(N,L)<=pm;%这里的作用找到比0.05小的分量%M(1,:)=zeros(1,L);v=v-2.*(v.*M)+M;%两个0-1矩阵相乘后M是1的地方V就不变,再乘以2.NICE!!确实好!!!把M中为1的位置上的地方的值变反%这里是点乘%变异%Resultsx=decode(v(:,1:22),xmin,xmax);%解码,求目标函数值fit=eval(f);%计算数值[sol,indb]=max(fit);%每次迭代中最优目标函数值,包括位置v(1,:)=v(indb,:);%用最大值代替fit_mean=mean(fit);%每次迭代中目标函数值的平均值。
mean求均值vx=[vxsol];%最优适应度值vmfit=[vmfitfit_mean];%适应度均值it=it+1;%迭代次数计数器增加end
2023/7/1 23:41:32 4KB 遗传算法
1
一、用MATLAB实现如下序列,并画出图形:①单元采样序列移位,100),3()(−=nnnx;
揭示:实现单元采样序列:0001{)(==nnn,可经由如下语句实现:x=zeros(1,N);x(1)=1;n=0:10;x=[zeros(1,3),1,zeros(1,7)];figure(1);stem(n,x);②单元阶跃序列移位,100),3()(−=nnunx揭示:实现单元阶跃序列:0001{)(==nnnu,可经由如下语句实现:x=ones(1,N);n=0:10;x=[zeros(1,3),1,ones(1,7)];figure(2);stem(n,x);
2023/5/2 0:58:32 461KB 数字信号实验代码
1
十多少个matlab绘制三维图的实例,详尽的代码以及表明,含有运行之后的figure,图像
2023/4/24 11:03:03 651KB matlab 三维图 surfc
1
Matlab通过Yahoo与Sina获取历史与实时股票数据inaYahooDataTestbyLiYangEmail:farutoliyang@gmail.com2013/11/26ContentsALittleCleanWork获取历史数据测试获取实时数据测试RecordTimeALittleCleanWorktic;clear;clc;closeall;formatcompact;获取历史数据测试%历史数据通过Yahoo接口获得(历史数据为未复权数据,使用时候请留意)%Yahoo中证券代码为(上海.ss深圳.sz),例如招商银行,600036.ssStockName='600036.ss';StartDate=today-200;EndDate=today;Freq='d';[DataYahoo,Date_datenum,Head]=YahooData(StockName,StartDate,EndDate,Freq);%K线展示scrsz=get(0,'ScreenSize');figure('Position',[scrsz(3)*1/4scrsz(4)*1/6scrsz(3)*4/5scrsz(4)]*3/4);Open=DataYahoo(:,2);High=DataYahoo(:,3);Low=DataYahoo(:,4);Close=DataYahoo(:,5);MT_candle(High,Low,Close,Open,[],Date_datenum);xlim([0length(Open)+1]);title(StockName);
2023/3/7 22:46:05 137KB Matlab 获取 历史 实时
1
共 31 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡