大致思路:matlab中生成矢量格式文件-导入Visio中-编辑-导出合适格式-在其他软件中使用

准备工具

  • Matlab 2014b或更高版本
  • Visio 2007或更高版本

    我查看过,Matlab能够输出的矢量化文件大概有*.svg、*.eps、*.pdf三种,但是这三种中,Visio能够打开的只有*.svg。之所以选择Visio,是因为画示意图来说,Visio基本算得上是比较好的选择了。

技术基础

简单的Matlab编程能力(目测你一天就能学会的Matlab知识,差不多就够用)

理论基础

理论基础就直接参看周建锋老师的博文好了:http://blog.sciencenet.cn/blog-3854-760545.html

绘制图像

下面以一个简单的图像示例来表示:

clc;clear ;close all
x = 0 : 0.05 : 10;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'LineWidth',2)
hold on
plot(x, y2, 'LineWidth', 2)
legend('Line1','Line2','Location','best') % 加图例,并将之放在最好的Location
axis auto
set(gca,'FontSize',14,'LineWidth', 1,'FontName', 'Times New Roman')
set(gcf,'Position',[400 100 800 600]);
if ~exist('./example.svg','file') % 判断文件是否存在
    saveas(gcf,'./example.svg')
end

得到的图像大致如下:

检查matlab当前的工作路径下,已经有了一个example.svg的文件。将这个文件在Visio中打开。

更简单一点的打开方式是:新建Visio文件,直接讲example.svg拖入Visio中。

我们知道,*.svg是网络通用的矢量图形格式,很多软件中都能直接打开的,最明显的软件当然是各种浏览器了,比如IE。

在上面的代码中,exist('./example.svg','file')是判断matlab的当前目录下文件example.svg是否存在,如果存在就不再生成example.svg 了,避免多次重复生成。但是如果你的图形需要更新,记得删除之前生成的版本。

在Matlab中,另外一种生成*.svg格式的方式是直接在图形窗口->file->save as...->save as type栏选择svg格式即可保存为*.svg格式的文件。当然,你需要自己命名一个文件名。

Visio中打开

在Visio中打开之后,我们大致会得到这样的图形,可以看到,很清晰,矢量化的。

同时,也很明显,它是高度组合化的。

所以,我们需要将之解组合

接下来按照步骤:

1. 选择图形(点击图形or按ctrl+A也行)

2. 点击home下的group

3. 点击解组合(ungroup)

4. 再次重复动作2和3,两次。也就是说说总共需要解组合三次。

下面两张图作为指引。

group功能

解组合功能

在Visio中的后处理

图形在Visio中打开之后便可以生成为其他的图形格式或者直接将visio文件插入word中即可。

  1. 删除白色底纹

    解组合之后,图形下层会有一些白色底矩形,可以将之删除,使图形透明。如下图所示,左下角和右上角的两块矩形分别是原来图形的曲线画布区域和整个图形画布区域的底纹图形填充方块。

  2. 查看图形元素

    当我们选择自由曲线工具之后,在点击图形中的Line2曲线,可以看到,实际上Line2曲线是由自由曲线通过控制很多的节点来实现cos函数图形的绘制的。这也可以让我们反向思考matlab底层的绘制函数时怎么实现曲线的绘制的。

  3. 修改元素

    在Visio中,我们可以选择任何的元素来进行修改,也可以在上面增加或删除任何的元素。这给我们修饰图形方面有了巨大的空间(当然不能进行数据修改以此来发文章)。

原文地址:http://www.cnblogs.com/cyruszhu/p/5477569.html
未经允许,禁止转载!相关请求,请联系作者:yunruizhu@126.com

matlab图形矢量化解决方案的更多相关文章

  1. HT全矢量化的图形组件设计

    HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: 矢量可无级缩放,界面不失真不模糊 描述矢量的文本内容远比图片小得多 目前各种window.devicePixelRatio不 ...

  2. Deep Learning 2_深度学习UFLDL教程:矢量化编程(斯坦福大学深度学习教程)

    1前言 本节主要是让人用矢量化编程代替效率比较低的for循环. 在前一节的Sparse Autoencoder练习中已经实现了矢量化编程,所以与前一节的区别只在于本节训练集是用MINIST数据集,而上 ...

  3. MATLAB学习笔记(十)——MATLAB图形句柄

    (一)图形对象及其句柄 一.图形对象 MATLAB图形对象包括: 1.MATLAB每一个具体图形一定包括计算机屏幕和图形窗口两个对象 二.图形对象句柄 1.定义 MATLAB在创建每一个图形对象时,都 ...

  4. python中numpy对函数进行矢量化转换

    在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环. 但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换. def Theta(x ...

  5. 【转】MATLAB图形句柄(二)

        MATLAB图形句柄   1.1 图形对象及其句柄 1.2 图形对象属性 1.3 图形对象的创建 1.1 图形对象及其句柄 1.图形对象 MATLAB的图形对象包括计算机屏幕.图形窗口.坐标轴 ...

  6. 使用ArcGIS Earth矢量化高精度的数据(kml转图层转shp/要素类)

    大家好,这次来分享干货.做地理分析的同学,或者需要使用地图却不知道哪里有精度较高矢量数据(如校园图)的时候,怎么办呢? 我们知道ArcGIS提供了精度较高的全球影像图,基于此,可以自己进行矢量化,然后 ...

  7. 网页静态化解决方案-Freemarker demo+语法

    1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说 ...

  8. BroadcastReceiver插件化解决方案

    --摘自<android插件化开发指南> 1.静态广播和动态广播仅区别于注册方式的不同.静态广播的注册信息保存在PMS中,动态广播的注册信息保存在AMS中 2.发送广播,也就是Contex ...

  9. Matlab图形调色

    Matlab图形调色 Simple example var colormap = require('colormap') options = {   colormap: 'jet',   // pic ...

随机推荐

  1. fcntl()

      fcntl() F_GETFL---------------------------------------------        将文件状态标志作为函数值返回. 文件状态标志:        ...

  2. BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )

    一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) *  2 - 1. 设g(i)为 gcd(x, y) = i ( 1 <= x <= ...

  3. Windows Services的1053错误的解决办法之一:修改注册表允许的响应时间

    Error: 'The service did not respond in a timely fashion' (ServicesPipeTimeout) when attempting when ...

  4. 【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)

    为保证重新创建的日志组成员可以成功创建,我们在删除日志组后需要手工删除对应的日志文件. 1.查看数据库当前REDO LOG日志相关信息1)查看日志组信息sys@ora10g> select * ...

  5. android设置eclipse中的自动提示功能

    菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾 (并 ...

  6. git clone cm source &amp; cm vs android version

    $ git clone https://github.com/CyanogenMod/android_packages_apps_DeskClock.git -b cm-9.0.0 CM4代表(And ...

  7. WinFrom - DataGridView控件右键选中记录并弹出菜单

    dataGridView右键菜单并选中该行 程序代码: private void dataGridView1_CellMouseDown(object sender, DataGridViewCell ...

  8. Java中的throw和throws的差别

    Java中的throw和throws的差别 1.throwkeyword用于方法体内部.而throwskeyword用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常 ...

  9. 基础知识(9)- Swing用户界面组件

    9.1 Swing和模型-视图-控制器设计模式  9.1.1 设计模式  9.1.2 模型-视图-控制器模式  9.1.3 Swing按钮的模型-视图-控制器分析 9.2 布局管理概述  9.2.1 ...

  10. boost::asio设置同步连接超时

    boost::asio设置同步连接超时   CSDN上求助无果,只好用自创的非主流方法了.asio自带的例子里是用deadline_timer的async_wait方法来实现超时的,这种方法需要单独写 ...