Matlab技巧

Why is there more uncomputable functions?

Posted by heylypp on April 20, 2019

记录一下Matlab R2018a使用技巧

Online版本

注册后,可以使用在线版本进行一些数学运算

1.导入3d模型

  • matlab:导入stl格式的模型,在matlab中使用模型
  • Simulink:安装SimMechanics插件,即可调用solidworks的模型

2.GUI设计使用

1
2
3
1.m 函数方式:使用uicontrol来建立控件对象

2.GUI设计工具:guide设计

3.离散仿真

4.滤波器的使用

使用FDAtool来进行滤波器设计:

例子:1、输入:被白噪声污染的正弦信号,fs=100khz,信号频率为10khz,噪声信号为20khz,现在要滤掉20khz的正弦信号。

1
2
3
4
5
6
7
8
9
10
11
12
clear all;
fs=100000;
t=0:1/fs:0.003;
f1=10000;
f2=20000;
signal1=sin(2*pi*f1*t);
signal2=sin(2*pi*f2*t);
y=signal1+signal2;
plot(y);
hold on;
plot(signal1,'r');
legend('被污染的信号','理想信号');

参考:https://blog.csdn.net/qsj8362234/article/details/8275511

6.串口操作

https://blog.csdn.net/guomutian911/article/details/41206663

7.与C++联合编程

C++调用Matlab

  • 一、调用Matlab的计算引擎

    1、以管理院身份运行命令提示符,切换到”matlab.exe“路径,输入「 matlab \ regserver」 命令进行注册

    1
    2
    
    >D:\matlab\R2018a\bin
    >D:\matlab\R2018a\bin\matlab \regserver
    

    若不注册,在使用engOpen()打开Matlab引擎会提示失败

    2、VS2017配置及Demo

    • 打开工程属性页,在”调试”-”环境“中,添加”PATH=<Matlab安装路径\bin\win64>“
    • 在”VC++目录“中,”可执行文件目录“中添加”Matlab安装路径\bin\win64“;”包含目录”中添加”Matlab安装路径\extern\include“,”库目录”中添加”Matlab安装路径\extern\lib\win64\microsoft“。
    • 在”链接器“-”输入“中,”附加依赖性“中添加”libmat.lib“,”libeng.lib”,”libmx.lib“

    Demo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    #include<cstdlib>
    #include <cstdio>
    #include<cstring>
    #include"engine.h"
      
    const int BUFFER_SIZE = 1024;
    char buffer[BUFFER_SIZE];
    void test()
    {
    	Engine* ep;
    	mxArray *x1 = NULL;
    	mxArray *y1 = NULL;
    	if ((ep = engOpen("")) == NULL)
    	{
    		printf("Engine Fail\n");
    	}
    	engOutputBuffer(ep, buffer, BUFFER_SIZE);
    	printf("Init Success\n");
      
    	double x[5] = { 1.0, 2.5,3.7,4.4,5.1 };
    	double y[5] = { 3.3,4.7,9.6,15.6,21.3 };
    	x1 = mxCreateDoubleMatrix(1, 5, mxREAL);
    	y1 = mxCreateDoubleMatrix(1, 5, mxREAL);
      
    	memcpy((char*)mxGetPr(x1), (void *)x, 5*sizeof(double));
    	memcpy((char*)mxGetPr(y1), (void *)y, 5*sizeof(double));
      
    	engPutVariable(ep, "x", x1);
    	engPutVariable(ep, "y", y1);
    	engEvalString(ep, "plot(x,y)");
    	getchar();
    	engClose(ep);
    }
      
    int main()
    {
    	test();
    }
    

    参考:https://blog.csdn.net/shouzang/article/details/80795945

  • 二、调用Matlab中由mcc编译生成的dll文件

1
mcc -B csharedlib:MyFunc MyFunc.m

Matlab调用C++程序,利用了C++编译快的特点,可以把一些复杂的过程放在C++中实现从达到加速的效果

C++调用Matlab,则利用Matlab在数学计算方面的优势,以及各种便利的工具包。

  • 在”链接器“-”输入“中,”附加依赖性“中添加”libmat.lib“,”libeng.lib”,”libmx.lib“

#动态链接库基础

#动态链接库编译生成

  • 命令

  • GUI

matlab调用C++

参考: https://zhuanlan.zhihu.com/p/30367346

https://blog.csdn.net/nanzhanfei/article/details/80852743

https://blog.csdn.net/qq_20515461/article/details/81229726

https://blog.csdn.net/shouzang/article/details/80795945

https://blog.csdn.net/wokaowokaowokao12345/article/details/80839187(讲解两种方法)

8.与python联合编程

python中调用matlab

matlab中调用python

9.Matlab调用外部包

参考:https://blog.csdn.net/wokaowokaowokao12345/article/details/87543984

介绍

LIBSVM是台湾大学林智仁(Chih-Jen Lin)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,目前最新版本是3.23。博文中在MATLAB平台配合实例学习掌握LIBSVM,希望可以对SVM感兴趣的朋友有一定的帮助。

10.使用Matlab 自带模块进行机器学习参数设置

https://zhuanlan.zhihu.com/p/87554660

相关资料: Matlab Compiler SDK 使用步骤及常见问题总结(全) 使用coder将Matlab 代码迁移至Cpp1 使用coder将Matlab 代码迁移至Cpp2