MATLAB和C语言混合编程示例

       MATLAB虽然很好用,尤其在数值运算,图像处理,仿真方面很简洁、方便,但有时间当处理比较大的数据时速度确实有点让人捉急,不过MATLAB提供了和C/C++混合编程的接口,以此兼具二者的优点来缓解这个矛盾。混合编程是入门有点难,这主要是你在Matlab中和C/C++混合编程,一般是这样的:

Matlab 函数传Matlab格式(风格)数据 —>C/C++程序首先解析Matlab格式(风格)数据 —>解析后的数据按C/C++ 程序既定的方案(C/C++风格)继续执行,得到结果 —>C/C++程序最后要把上述结果数据打包成Matlab格式(风格)输出给Matlab中的主调程序。

       不多说,这里只是粗浅的示例一个矩阵乘法的混合编程来作一个大致的入门程序。好了直接上代码,程序中含有详尽的注解,就不单独说明了。 

    1、混合编程函数主体 AxB.c

//2017/03/29 by DQ
#include "mex.h"
#include
#include
//矩阵相乘
void mutiply(double *A,double *B,double *C,size_t m1,size_t n1 ,size_t n2)
{
    size_t  I,J,j,iA,iB,iC;
    C[0]=0.0;
    for(J=0;J

       2、Matlab 主调程序

% 2017/03/29 by DQ
clc;
clear;
mex AxB.c %用C++编译器编译这个C程序
A=rand(3);
B=randi([1,15],3,4);
Mat_AxB=A*B   %使用Matlab自身矩阵乘法计算,作为正确性基准
C_AxB=AxB(A,B) %调用C程序实现的矩阵乘法

       好了至此我们就完成了一个简单的Matlab和C/C++混合编程的过程,想全面的了解混合编程,Matlab的说明文档还是很友好的,因此多看官方文档这些基本有说明。

      这个混合编程过程看似简单,中间却可能有很多的麻烦,你想一下,一种语言有时尚且有很多问题,何况混合编程,当工程比较大时这种问题会更加突出。一般不推荐混合编程,但是啦Matlab的库实在是太好用了,你要自己实现很困难或调用其它C/C++不方便,没法子那只能勇往直前吧,相信Matlab会越来越人性化的。

你可能感兴趣的:(Matlab)