TrueTime的安装、运行例程
一、前言
Truetime的安装是为了完成课程相关需求,但在安装过程中遇到一些问题,想到自己之前注册了博客所以打算把这个作为第一篇的内容。请放心这个的安装过程并不困难,可以放心食用。
二、准备
- Truetime 2.0 http://www.control.lth.se/research/tools-and-software/truetime/
- matlab (version >= 7.0)
- visual studio
注:Visual Studio版本需要使用Matlab支持版本,可以通过(https://ww2.mathworks.cn/support/requirements/previous-releases.html)查看自己的Matlab版本支持的c/c++编译器版本,然后下载安装即可,注意truetime只能用visual studio编译。
比如我的matlab版本是2015b,点击Support Compilers下的对应链接,在pdf中找到"For MEXfile..."的项下有对号的是支持的compiler:


可以看到Matlab2015b支持VS2015-VC2008之间的版本。
三、安装过程
假设Matlab的安装路径为${MATLABPATH} (eg: C:\Program Files\MATLAB\R2015b),如果为了图方便可以把这个作为环境变量
Step1:将TrueTime压缩包解压到matlab安装包下的toolbox文件夹下,即 ${MATLABPATH}\toolbox 中
Step2:添加环境变量TTKERNEL,值为 ${MATLABPATH}\toolbox\truetime-2.0\kernel(注意:如果没有设置环境变量MATLABPATH的话需要用绝对路径)
如果设置的变量为用户变量则需要重启计算机,如果为系统变量则直接使用
Step3:以管理员方式打开Matlab,将TrueTime添加到Matlab路径中
添加路径:
${MATLABPATH}\toolbox\truetime-2.0\kernel
${MATLABPATH}\toolbox\truetime-2.0\kernel\matlab
${MATLABPATH}\toolbox\truetime-2.0\kernel\matlab\help
保存关闭即可,可以选择添加这三个文件夹,当然图方便也可以直接选择添加并包含子文件夹。

Step4:设置Matlab路径为 ${MATLABPATH}\toolbox\local ,打开 ${MATLABPATH}\toolbox\local\startupsav.m ,在文件头添加并保存:
addpath(getenv('TTKERNEL'))
init_truetime;
(如果无法保存说明没有用管理员模式打开)
Step5:打开 ${MATLABPATH}\toolbox\local\matlabrc.m ,用Save WorkSpace保存为matlab.mat
Step6:将 ${MATLABPATH}\toolbox\truetime\kernel 文件夹下的init_truetime.m文件拷到matlab安装目录下的toolbox下local文件夹中,注意是kernel文件夹下的init_truetime.m,然后在复制的init_truetime.m末尾添加代码
addpath(getenv('TTKERNEL'))

Step7:在matlab命令行输入下面,选择自己的编译器
mex -setup c++
我的结果如下所示,直接点击即可或输入提示命令,显示配置完成即可。

Step8:执行编译脚本开始编译
make_truetime

最终得到Successful证明你成功了,可以直接到第五部分执行例程
如果不那么幸运的话我们会得到这样的结果 Compilation using MEX failed! (Run ''mex -setup C++'' to configure your C++ compiler)
我们可以这样做,首先在matlab命令行输入:
open make_truetime
在脚本中我们用‘%’注释掉异常处理代码try...catch...end,保存后再次执行make_truetime,就会显示运行中出现的真实错误,根据提示处理问题。

四、处理问题
1. 找不到stdin.h,找不到UINT32_C
将 ${MATLABPATH}\toolbox\truetime-2.0\kernel\include_msc 中的.h文件复制到 ${MATLABPATH}\extern\include,我们打开复制过去的stdint.h,找到INT32_C,然后将它的宏条件注释掉:
2. 找不到make_truetime
没能把truetime的路径添加到matlab中
3. 路径错误
环境变量TTKERNEL配置出错
4. 找不到SDK
没有安装matlab相应版本的visual studio
5. 无法打开XXX.mexw64
编译过程中出错,可以删除truetime文件夹,然后将新的truetime文件夹放到toolbox中
......其他问题可以留言学习
五、执行例程
设置matlab路径为truetime下的example中选择的例程路径,打开模型文件然后运行测试即可。

六、总结
本来打算随便写一点,结果发现自己对很多步骤都遗忘了,看来以后做实验之类的还是需要用录屏方法记录,写这种文章可能没什么价值但是如果能够帮到你那是我的荣幸,仅此而已。
如果有更好的方法或有问题,欢迎留言交流,祝好。
TrueTime的安装、运行例程的更多相关文章
- Windows OS上安装运行Apache Kafka教程
Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...
- 您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展”处理方法
转自:http://www.xuebuyuan.com/1549022.html 这已经是一个老掉牙的问题了,部分人使用自己的服务器安装WordPress程序之后,会出现“您的 PHP 似乎没有安装运 ...
- Android中插件开发篇之----动态加载Activity(免安装运行程序)
一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析 ...
- 用JSON-server模拟REST API(一) 安装运行
用JSON-server模拟REST API(一) 安装运行 在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要 ...
- Mac 下安装运行Rocket.chat
最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...
- 在Linux上rpm安装运行Redis 3.0.4
http://www.rpmfind.net搜索redis,找到redis3.0.4的rpm源选做 wget ftp://fr2.rpmfind.net/linux/remi/enterprise/6 ...
- Linux通过docker安装运行酷Q--用QQ骰子君进行跑团
Linux通过docker安装运行酷Q 文:铁乐与猫 需求:和小伙伴周末进行愉快的TRPG跑团,需要在QQ讨论组上加了qq小号后,将qq小号用酷Q配合投骰的应用变成骰子君. 限制:我个人的云计算服务器 ...
- Activity工作流(2)-入门安装运行第一个例子
转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- Phonegap项目创建 编译 安装 运行
一.创建 Phonegap项目 1. cd workspace 2.创建phonegap项目 cordova create 目录 识别符 显示名 例如:cordova create hello com ...
随机推荐
- C#泛型自己的理解和总结
万事开头难,今天先从随笔开始,记录工作中平时不太注意到的知识点.今天开始说下泛型. 泛型在我们项目中很是常见,使用很广泛,我觉的它有以下几个优点. 1.安全性. 2.性能. 3.二进制代码的重用. 4 ...
- python线程条件变量Condition(31)
对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition. 一.线程条件变 ...
- <<代码大全>>阅读笔记之一 使用变量的一般事项
一.使用变量的一般事项 1.把变量引用局部化 变量应用局部化就是把变量的引用点尽可能集中在一起,这样做的目的是增加代码的可读性 衡量不同引用点靠近程度的一种方法是计算该变量的跨度(span) 示例 a ...
- poj 2991 起重机
地址 http://poj.org/problem?id=2991 题解 本来以为这是一个简单的线段树模板 不料始终不太明白线段树如何记录转动角度后的各个线段端的XY值 学习了网络上的一些博客题解 感 ...
- 20190908write from memory
JavaScript_Chapter1 文档名:first.js document.write("你好,今天天气凉爽"); 文档名:js_demo1.js /*1.定义js的变量语 ...
- 使用aop加解密http接口
背景 最近在写一个小程序接口,由于安全性比较高,因此需要给请求参数和响应进行加密处理.如果在每个方法上都加密解密,那样代码就显得太繁琐了而且工作量会加大.所以,我们会统一进行加解密处理,一种比较传统的 ...
- 【数据结构】之二叉树(Java语言描述)
有关树的一些基础知识点请参考[这篇文章]. 本文主要记录Java语言描述的二叉树相关的一些操作,如创建.遍历等. 首先,我们需要一个表示树中节点的数据结构TreeNode,代码如下: public c ...
- R语言学习笔记(2)——数据结构与数据集
一.数据集 数据集的概念 数据集是由数据组成的矩阵数组,行表示观测(observation),列表示变量(variable) 数据类型 数值型变量 PatientID.AdmData.Age 为数值型 ...
- 小白的springboot之路(六)、跨域解决方案CORS
0-前言 前后端分离.分布式集群,经常都会涉及到跨域访问,而浏览器基于同源策略,正常情况下是不能跨域的,这就需要我们解决跨域访问问题:spring boot解决跨域也比较简单: 1-CORS跨域解决方 ...
- Nuget Server的搭建及实践之旅
一. 背景 在做的一个项目使用的是Asp.Net MVC,由于缺少规范与约束,团队成员在使用类库各自为政,时常出现路径和版本不一致的问题.在一个同事建议下,开始尝试使用Nuget 管理项目或公司使用的 ...