matlab编译教学视频
‘壹’ matlab如何编译
一般需要用 function定义的子文件可执行,只有一个主文件,并将M文件放在一起即可……下面有个示例希望对你有帮助
‘贰’ matlab如何编译mex文件
通过MEX文件可以在MATLAB中像调用内嵌函数一样调用现有的使用C语言和Fortran等语言编写的函数,实现了代码重用,同时也能解决MATLAB循环效率低的缺点,提高MATLAB环境中数据处理的效率。
MEX文件的后缀名为 .mexw32
MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB应用程序接口组件和相关工具,二是要有C语言或Fortran语言的编译器。
需要对MATLAB系统进行设置,使MATLAB系统知道使用系统的哪一个C语言编译器,以及其参数和路径。
MEX文件系统设置:
>> mex –setup按照提示进行,最后出现Done…系统配置完毕。
C语言MEX文件的建立
C语言MEX文件的建立
1. MEX文件的结构
a) 计算子程序
b) 入口子程序,void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]){ /*用户特定的代码….*/ }
2. 创建timestwoalt.c
#include "mex.h"
void timestwo_alt(double *y, double x)
{
*y = 2.0*x;
}
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )
{
double *y;
doublex;
/* 检查参数 */
if (nrhs != 1) {
mexErrMsgTxt("One input argument required.");
} else if (nlhs > 1) {
mexErrMsgTxt("Too many output arguments.");
} else if (!mxIsNumeric(prhs[0])) {
mexErrMsgTxt("Argument must be numeric.");
} else if (mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0])) {
mexErrMsgTxt("Argument must be non-complex scalar.");
}
/* 为输出参数创建变量 */
plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
/*
为参数 x、y赋值,x为值,而y为指针
(由于MATLAB没有值传递,所以用指针才能得到修改后的y值,
不然修改的是y的一个副本,为临时变量,在函数返回时,y值没有变化,
不能得到希望的结果)
*/
x = mxGetScalar(prhs[0]);
y = mxGetPr(plhs[0]);
/* 调用timestwo_alt 子函数 */
timestwo_alt(y,x);
}
3. 编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件
4. 运行:在MATLAB的控制窗口中输入
x=2;
y=timestwoalt(x)
输出:y=4
MEX文件实现了一种C语言与MATLAB的接口,其实际的计算功能仍在C语言形式的计算子程序中完成,而入口子程序的功能是检查参数以匹配C语言的参数规范(how to?)。
当有C语言编写的大型程序时,不必用MATLAB语言重新编写,只要将此C语言程序作为一个计算子程序,然后编写一个入口子程序,完成参数的匹配,然后编译成MEX文件即可。
MEX文件的另外一个功能是可以将MATLAB编程中的瓶颈问题,如多重循环等,将此类费时的指令用C语言实现,然后作必要的入口子程序,编译成MEX文件,可以有效地提高MATLAB的效率。
S-函数创建器限制了C语言S-函数的功能:只能有一个输入信号和一个输出信号,而且只能处理double类型的数据!所以,可用性不大。
‘叁’ MATLAB 7.0
附件说明
关于MATLAB的入门视频有不少,但要称的上完整、系统,恐怕很难有统一的标准。
我提供的是胡晓冬,董辰辉的《MATLAB从入门到精通》(人民邮电出版社,2010-06)一书的配套光盘,应该能满足你的需求。内含217个实例程序文件,330分钟的视频讲解。
图书下载
ishare.iask.sina.com.cn/f/67219177.html
图书简介
本书以MATLABR2009a软件为基础,系统讲解了MATLAB基本环境和操作方法。本书介绍了最新的MATLAB功能,并分章阐述了数据类型、数值计算、符号计算、编程基础、可视化、Simulink、应用程序接口等内容,结合案例详细讲解了MATLAB语言的使用。本书还专门讲解了实用的MATLAB编程技巧与数学建模应用等。
本书所带的光盘是读者学习MATLAB的好帮手,提供了全部示例的源程序,另外配有知识点和例题的视频教程,可帮助读者更好地理解书中的内容并更快地掌握MATLAB的使用方法。
本书内容丰富、贴近实战应用,可作为高校学生系统学习MATLAB的书籍,也可以作为广大科研和工程技术人员在工作中使用MATLAB的参考书。
图书目录
第1章MATLAB概述1
1.1MATLAB简介1
1.2MATLAB主要功能2
1.2.1开发算法和应用程序2
1.2.2分析和访问数据3
1.2.3实现数据可视化3
1.2.4进行数值计算4
1.2.5发布结果和部署应用程序5
1.3MATLAB安装与启动5
1.3.1MATLAB的安装5
1.3.2MATLAB的启动与退出7
1.3.3Desktop操作界面简介8
1.4CommandWindow运行入门8
1.4.1命令行的使用8
1.4.2数值、变量和表达式9
1.4.3命令行的特殊输入方法11
1.4.4命令窗口的显示格式12
1.4.5命令窗口常用快捷键与命令13
1.5CommandHistory窗口14
1.6CurrentDirectory窗口14
1.7WorkspaceBrowser和VariableEditor窗口15
1.7.1WorkspaceBrowser窗口15
1.7.2VariableEditor窗口15
1.8命令行辅助功能与FunctionBrowser16
1.9Help17
1.9.1HelpBrowser18
1.9.2命令窗口查询帮助18
第2章矩阵和数组20
2.1矩阵的创建与组合20
2.1.1创建简单矩阵20
2.1.2创建特殊矩阵21
2.1.3矩阵的合并22
2.2矩阵的寻访与赋值23
2.2.1矩阵的标识23
2.2.2矩阵的寻访24
2.2.3矩阵的赋值24
2.3进行数组运算的常用函数25
2.3.1函数数组运算规则的定义25
2.3.2进行数组运算的常用函数25
2.4查询矩阵信息27
2.4.1矩阵的形状信息27
2.4.2矩阵的数据类型27
2.4.3矩阵的数据结构28
2.5数组运算与矩阵运算28
2.6矩阵的重构29
2.6.1矩阵元素的扩展与删除29
2.6.2矩阵的重构30
2.7稀疏矩阵31
2.7.1稀疏矩阵的存储方式32
2.7.2稀疏矩阵的创建32
2.7.3稀疏矩阵的运算35
2.7.4稀疏矩阵的交换与重新排序36
2.7.5稀疏矩阵视图38
2.8多维数组38
2.8.1多维数组的创建39
2.8.2多维数组的寻访与重构41
2.9多项式的表达式及其操作44
2.9.1多项式的表达式和创建44
2.9.2多项式运算函数45
第3章数据类型47
3.1数值型47
3.2逻辑型47
3.2.1逻辑型简介47
3.2.2返回逻辑结果的函数48
3.2.3运算符的优先级50
3.3字符和字符串51
3.3.1创建字符串51
3.3.2字符串比较52
3.3.3字符串查找与替换53
3.3.4类型转换54
3.3.5字符串应用函数小结55
3.4structure数组56
3.4.1structure数组的创建57
3.4.2structure数组的寻访59
3.4.3structure数组域的基本操作60
3.4.4structure数组的操作61
3.5cell数组63
3.5.1cell数组的创建63
3.5.2cell数组的寻访65
3.5.3cell数组的基本操作65
3.5.4cell数组操作函数66
3.6Map容器67
3.6.1Map数据类型介绍67
3.6.2Map对象的创建68
3.6.3查看Map的内容69
3.6.4Map的读写70
3.6.5Map中key和value的修改72
3.6.6映射其他数据类型73
第4章数值计算75
4.1因式分解75
4.1.1行列式、逆和秩75
4.1.2Cholesky因式分解77
4.1.3LU因式分解78
4.1.4QR因式分解79
4.1.5范数81
4.2矩阵特征值和奇异值82
4.2.1特征值和特征向量的求取82
4.2.2奇异值分解84
4.3概率和统计85
4.3.1基本分析函数85
4.3.2概率函数、分布函数、逆分布函数和随机数93
4.4数值求导与积分94
4.4.1导数与梯度94
4.4.2一元函数的数值积分95
4.4.3二重积分的数值计算97
4.4.4三重积分的数值计算97
4.5插值98
4.5.1一维数据插值98
4.5.2二维数据插值99
4.5.3多维插值100
4.5.4样条插值100
4.6曲线拟合101
4.6.1最小二乘原理及其曲线拟合算法101
4.6.2曲线拟合的实现102
4.7Fourier分析102
4.8微分方程104
4.8.1常微分方程104
4.8.2偏微分方程106
第5章符号计算110
5.1符号变量、表达式及符号方程110
5.1.1符号变量与表达式的创建110
5.1.2符号计算中的运算符和基本函数112
5.1.3创建符号方程113
5.2符号微积分113
5.2.1符号求导与微分113
5.2.2符号求极限115
5.2.3符号积分116
5.2.4级数求和116
5.2.5Taylor级数117
5.3符号表达式的化简与替换117
5.3.1符号表达式的化简118
5.3.2符号表达式的替换122
5.4符号可变精度计算125
5.5符号线性代数127
5.5.1基础代数运算127
5.5.2线性代数运算128
5.6符号方程求解130
5.6.1求代数方程符号解130
5.6.2求代数方程组的符号解130
5.6.3求微分方程符号解132
5.6.4求微分方程组的符号解134
5.7符号积分变换134
5.7.1Fourier变换及其反变换134
5.7.2Laplace变换及其反变换135
5.7.3Z变换及其反变换136
第6章MATLAB编程基础138
6.1M文件138
6.1.1M文件编辑器139
6.1.2M文件的基本内容140
6.1.3脚本式M文件142
6.1.4函数式M文件143
6.2流程控制143
6.2.1顺序结构144
6.2.2if语句144
6.2.3switch语句146
6.2.4for循环146
6.2.5while循环147
6.2.6continue命令148
6.2.7break命令149
6.2.8return命令150
6.2.9人机交互命令150
6.3函数的类型152
6.3.1主函数152
6.3.2子函数152
6.3.3私有函数153
6.3.4嵌套函数154
6.3.5重载函数157
6.3.6匿名函数157
6.4函数的变量161
6.4.1变量类型161
6.4.2变量的传递162
6.5函数句柄164
6.5.1函数句柄的创建165
6.5.2函数句柄的调用165
6.5.3函数句柄的操作166
6.6串演算函数167
6.6.1eval函数167
6.6.2feval函数168
6.6.3inline函数169
6.7内存的使用170
6.7.1内存管理函数170
6.7.2高效使用内存的策略170
6.7.3解决“OutofMemory”问题172
6.8程序调试和优化173
6.8.1使用Debugger窗口调试173
6.8.2在命令窗口中调试176
6.8.3profile性能检测178
6.9错误处理180
6.9.1使用try-catch语句捕捉错误180
6.9.2处理错误和从错误中恢复181
6.9.3警告183
第7章数据可视化185
7.1绘图的基本知识185
7.1.1离散数据和离散函数的可视化185
7.1.2连续函数的可视化186
7.1.3可视化的一般步骤187
7.2二维图形187
7.2.1基本绘图函数187
7.2.2曲线的色彩、线型和数据点型189
7.2.3坐标、刻度和网格控制190
7.2.4图形标识192
7.2.5双坐标图和子图195
7.2.6双轴对数图形197
7.2.7特殊二维图形197
7.3三维图形203
7.3.1绘制三维曲线图203
7.3.2绘制三维曲面图203
7.3.3特殊三维图形205
7.4三维图形的高级控制207
7.4.1视点控制207
7.4.2颜色的使用208
7.4.3光照控制208
第8章图像处理210
8.1图像文件的操作210
8.1.1查询图像文件的信息211
8.1.2图像文件的读写212
8.1.3图像文件的显示213
8.1.4图像格式的转换214
8.2图像的几何运算216
8.2.1图像的平移216
8.2.2图像的镜像变换216
8.2.3图像缩放217
8.2.4图像的旋转218
8.2.5图像的剪切218
8.3图像的正交变换219
8.3.1傅立叶变换219
8.3.2离散余弦变换220
8.3.3Radon变换221
8.4MATLAB图像增强222
8.4.1像素值及其统计特性222
8.4.2对比度增强224
8.4.3直方图均衡化225
8.4.4空域滤波增强226
8.4.5频域增强228
第9章图形用户界面(GUI)设计230
9.1句柄图形对象230
9.1.1图形对象230
9.1.2图形对象句柄231
9.1.3图形对象属性的获取和设置232
9.2GUIDE简介234
9.2.1启动GUI235
9.2.2Layout编辑器235
9.2.3运行GUI236
9.3创建GUI236
9.3.1GUI窗口布局236
9.3.2菜单的添加237
9.3.3控件241
9.4CallBack函数245
9.4.1变量的传递245
9.4.2函数编写246
9.5GUI设计示例248
第10章数据文件I/O254
10.1处理文件名称254
10.2MATLAB支持的文件格式255
10.3导入向导的使用256
10.4MAT文件的读写257
10.4.1MAT文件的写入257
10.4.2MAT文件的读取258
10.5Text文件读写259
10.5.1Text文件的读取259
10.5.2Text文件的写入262
10.6Excel文件读写262
10.7音频/视频文件操作264
10.7.1获取音频/视频文件的文件头信息264
10.7.2音频/视频文件的导入与导出264
第11章MATLAB优化问题应用266
11.1MATLAB优化工具箱266
11.1.1MATLAB求解器267
11.1.2极小值优化269
11.1.3多目标优化275
11.1.4方程组求解276
11.1.5最小二乘及数据拟合277
11.2模式搜索法278
11.3模拟退火算法280
11.3.1模拟退火算法简介280
11.3.2模拟退火算法应用实例280
11.3.3关于计算结果281
11.4遗传算法282
11.4.1遗传算法简介282
11.4.2遗传算法应用实例283
11.5OptimizationTool简介285
第12章信号处理289
12.1信号处理基本理论289
12.1.1信号的生成289
12.1.2数字滤波器结构293
12.2IIR滤波器的MATLAB实现294
12.2.1IIR滤波器经典设计295
12.2.2IIR滤波器直接设计法301
12.2.3广义巴特沃思IIR滤波器设计302
12.3FIR滤波器的MATLAB实现303
12.3.1FIR滤波器设计303
12.3.2fir1函数304
12.3.3fir2函数305
第13章Simulink仿真306
13.1Simulink简介306
13.1.1Simulink功能与特点306
13.1.2Simulink的安装与启动307
13.2Simulink基础309
13.2.1Simulink模型是什么309
13.2.2Simulink模块操作309
13.2.3Simulink信号线操作312
13.2.4Simulink对模型的注释314
13.2.5Simulink常用的模型库314
13.2.6Simulink仿真配置316
13.3Simulink动态系统仿真320
13.3.1简单系统的仿真分析320
13.3.2离散系统的仿真分析322
13.3.3连续系统的仿真分析324
13.4Simulink模型中的子系统327
13.4.1子系统的建立327
13.4.2子系统的封装328
13.5SimulinkS-函数331
13.5.1什么是S-函数332
13.5.2S-函数的作用和原理332
13.5.3用M文件创建S-函数实例333
第14章应用程序接口336
14.1MATLAB应用程序接口介绍336
14.2MATLAB调用C/C++337
14.2.1MATLABMEX文件338
14.2.2C-MEX文件的使用341
14.3C/C++调用MATLAB引擎346
14.3.1MATLAB计算引擎概述346
14.3.2MATLAB计算引擎库函数347
14.3.3C/C++调用MATLAB引擎348
14.4MATLAB编译器352
14.4.1MATLAB编译器的安装和设置353
14.4.2MATLAB编译器的使用354
14.4.3独立应用程序356
第15章MATLAB基础计算技巧365
15.1MATLAB数组创建与重构技巧365
15.2MATLAB数据类型使用技巧371
15.3MATLAB数值计算技巧373
15.4MATLAB文件读取操作技巧375
15.5MATLAB绘图技巧376
第16章MATLAB编程技巧379
16.1MATLAB编程风格379
16.1.1命名规则379
16.1.2文件与程序结构381
16.1.3基本语句382
16.1.4排版、注释与文档385
16.2MATLAB编程注意事项387
16.3内存的使用389
16.4提高MATLAB运行效率390
16.4.1提高运行效率基本原则390
16.4.2提高运行效率举例392
第17章MATLAB在数学建模中的应用395
17.1MATLAB蒙特卡罗模拟395
17.1.1蒙特卡罗方法简介395
17.1.2蒙特卡罗方法编程示例396
17.2MATLAB灰色系统理论应用398
17.2.1GM(1,1)预测模型简介398
17.2.2灰色预测计算实例399
17.3MATLAB模糊聚类分析401
17.3.1模糊聚类分析简介401
17.3.2模糊聚类分析应用示例402
17.4MATLAB层次分析法应用406
17.4.1层次分析法简介406
17.4.2层次分析法的应用409
‘肆’ 如何将Matlab程序编译成exe文件
我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序x0dx0a希望这些对你有用x0dx0ax0dx0a如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:x0dx0ax0dx0a一、生成独立可执行的程序(exe文件)步骤x0dx0ax0dx0a 1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。x0dx0a 2、设置编译器。在matlab命令行输入mbuild _setup以及mex _setup,选择安装的c编译器。x0dx0a 3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。x0dx0a当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;x0dx0a注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;x0dx0a 4、安装
‘伍’ 如何将MATLAB程序编译成exe文件
1.设置编译器:
在确定安装好Matlab
Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
mbuild –setup, 按提示选择matlab自带编译器LCC。
2.将程序编译成exe文件:
(1)如果全是M文件
调用格式:
Mcc -m mainmfile mfile1 mfile2 ……
mfileN;
第一个mainmfile 为主程序(main
function),其余均为需要的M文件。
(2)如果是GUI文件
例如mygui.fig 和mygui.m,编译这个GUI的命令是:
>>mcc -m
mygui
(3)如果既有GUI文件,又有M文件(谁是主程序,谁放在前)
①>>mcc -m mygui mfile
(mygui是主程序,即mygui中用到mfile.m);
②>>mcc -m mfile
mygui(mfile是主程序,即mfile.m中用到mygui)。
(4)如果GUI用到ActiveX控件
>>mcc -m mygui -a
myactivex
myactivex
是ActiveX控件的文件名。
编译完成后,可通过双击生成.exe文件;或者在matlab命令行输入带“!”的命令:
>>! mainmfile
(主程序文件名)
3.编译后的文件可以先打包成一个.exe文件,然后再用隐藏DOS窗口的软件将该.exe文件弹出的DOS窗口隐藏。
(1)打包软件很多。如MoleBox Pro;
(2)隐藏DOS窗口的方法或软件也很多,在各大Matlab论坛上都有,例如:Matlab中文论谈。
下面介绍两种隐藏方法:
方法一: 在命令窗口输入:
cd(prefdir)
edit compopts.bat
根据你使用的环境,在打开的文件最后添加以下语句:
A.VC环境下:
set
LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
B.LCC环境下:
set LINKFLAGS=%LINKFLAGS%
-subsystemwindows
C. Borland:
set LINKFLAGS=%LINKFLAGS% -aa
保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了。
方法二:使用suppress工具,点击下列地址下载(具体操作里面有说明)。
http://www.mathworks.com/matlabcentral/fx_files/3909/1/suppress.zip
方法一生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。
方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。
4.如果目标计算机上没有安装该版本的matlab,上面生成的exe文件不能正常运行,解决方法有二:
(1)将该执行文件所需要的dll文件都复制到目标计算机上;
(2)在目标计算机上安装MCRinstaller.exe。(该文件位于matlab安装目录下的
\toolbox\compiler\deploy\win32内)。
将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到目标计算机的环境变量中,通常是自动加载。
如果没有,也可手动安装,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。
最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。
‘陆’ MATLAB程序如何编译产生DLL
把一个简单的m代码编译成C++接口的DLL,然后在C++程序中调用。为冲明了简单起见,这里的C++程序是一个Win32 Console程序,而不是Windows图形界面的程序,不过不妨碍我们的讨论。x0dx0ax0dx0a下面是这个例子用到的m代码。它定义了一个名为myadd2的函数x0dx0ax0dx0afunction [y,z] = myadd2(a, b)x0dx0ax0dx0a% mmy function, just to demonstrate the ideax0dx0ax0dx0ay = a+b;x0dx0ax0dx0az = a+2*b;x0dx0ax0dx0aendx0dx0a复制代码x0dx0a首先把这个函数编译成C++接口的DLL。为此,我们需要先设置MATLAB编译器。衫判闷具体做法是在MATLAB命令行执行“mbuild -setup”。然后用下面这行命令把myadd2函数编译成一个C++接口的DLL:x0dx0ax0dx0amcc -W cpplib:libmyadd2 -T link:lib myadd2x0dx0a复制代码x0dx0a结果,我们将会得到包含libmyadd2.dll,libmyadd2.ctf,libmyadd2.h,libmyadd2.lib等在内的一些文件。接下来我们只需要这四个文件。x0dx0ax0dx0a然后在VS2005中创建一个Win32 Console的VC++工程,我在测试时取名为testmyadd2_r2007b。把以上四个文件拷贝到VC++工程的源代码所在目录。x0dx0ax0dx0a接下来设置VC++,让它能找到MATLAB接口函数的定义及连接库函数。可以有两种或弯设置方式:一种是改VS2005中关于VC++的设置,这样的好处是每个新的工程都能自动获得这个设定;而另一种是只改当前工程的设置,也就是设置只对该工程有效。这里用后一种方式。x0dx0ax0dx0a在VS2005中打开工程testmyadd2_r2007b,选择菜单“Project-->;Properties,在出来的对话框上,把MATLAB提供的include路径加到VC++的头文件搜索路径。x0dx0ax0dx0a然后把相应的lib所在目录加到linker的额外搜索路径上x0dx0ax0dx0a接下来,告诉VC++,我们的这个程序需要连接到另外两个额外的库函数:libmyadd2.lib和mclmcrrt.lib。中间用空格隔开x0dx0ax0dx0a最后则是程序代码。这个程序只有一个main函数,其完整代码附在下面给大家参考。x0dx0ax0dx0a#include "stdafx.h"x0dx0ax0dx0a#include