Matlab调C/C++简单模板例子

如果你是需要快速搭建一个matlab调c/c++环境,这篇文章可以参考

有了c代码,想在matlab里面调用,可以参考我这个模板

matlab调用代码:

clear all
close all
clcinput1 =1;
input2 =2;[output1,output2] = mexfunction(input1,input2);output1
output2

这里面强调两个概念

1、Matlab里面所有变量都是矩阵,包括单变量也是1*1的矩阵

2、Maltab矩阵按列优先访问,这个和fortran保持一致

Cpp代码:


#include "mex.h"void c_func(double input1,double input2,double *output1,double *output2) 
{}void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{	double *pdata; // mcnoidal(waveheight,waveperiod,0.02,waterdeepth ,0, datanum,1, waveheight,flapdeepth);pdata=mxGetPr(prhs[0]); double input1 = *pdata;int M = mxGetM(prhs[0]);int N = mxGetN(prhs[0]);printf("%d * %d\n",M,N);pdata=mxGetPr(prhs[1]); double input2 = *pdata;int m = 3;int n = 2;plhs[0] = mxCreateDoubleMatrix(m, n, mxREAL); double *output1;	output1 = mxGetPr( plhs[0]);//列优先排列output1[0*m+0] = 1;output1[1*m+0] = 2;output1[0*m+1] = 3;output1[1*m+1] = 4;output1[0*m+2] = 5;output1[1*m+2] = 6; 	plhs[1] = mxCreateDoubleMatrix(1, 1, mxREAL); double *output2;output2 = mxGetPr( plhs[1]);output2[0] = -1;//c_func(input1,input2,output1,output2) ;}

plhs 全称 parameters left matlab中的左侧输出

prhs全称 parameters left matlab中的右侧输入

plhs[0] plhs[1]是输出,需要多少输出变量,那么就在c中用mxCreateDoubleMatrix申请多少

所有的数字,数组,二位数字,到c这边都是一维数组,且按列优先访问。

输出如下

注三行两列的二维数组访问方式:

int m=3;
int n=2;
//内存列优先排列,但赋值按逐行赋值
output1[0*m+0] = 1;
output1[1*m+0] = 2;
output1[0*m+1] = 3;
output1[1*m+1] = 4;
output1[0*m+2] = 5;
output1[1*m+2] = 6;//列优先排列,但按列赋值
output1[0*m+0] = 1;
output1[0*m+1] = 3;
output1[0*m+2] = 5;
output1[1*m+0] = 2;
output1[1*m+1] = 4;
output1[1*m+2] = 6;//另:行优先排列,按行赋值
output1[0*n+0] = 1;
output1[0*n+1] = 2;
output1[1*n+0] = 3;
output1[1*n+1] = 4;
output1[2*n+0] = 5;
output1[2*n+1] = 6;

在matlab 使用mex 编译一下(预先需要mex setup)

mex mexFunction.cpp 即可编译,然后在malab直接调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好,我是电商花花。 现在做抖音小店的基本上都是一些新商家,对于我们众多零基础的朋友来说,是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台,许多人都欣喜的投入其中,期望能够借此来改变自己的命运&…

西门子电动阀门

一、西门子电动调节阀 二、西门子电动调节蝶阀 1、阀门 2、执行器

客户资料不翼而飞?企业数据保护攻略

在数字化经济时代,企业的客户资料等同于商业生命线,一旦泄露,后果不堪设想。例如,2017年Equifax的数据泄露事件,造成超过1.4亿用户的个人信息外泄,不仅给用户带来风险,也让公司名誉受损&#xf…

BackTrader 中文文档(二)

原文:www.backtrader.com/ 概念 平台概念 原文:www.backtrader.com/docu/concepts/ 这是平台某些概念的集合。它试图收集可在使用平台时有用的信息片段。 开始之前 所有小代码示例都假设以下导入可用: import backtrader as bt import ba…

移植speexdsp到OpenHarmony标准系统④

五、在OpenHarmony编译体系下增量编译Speexdsp 建议先增量编译生成三方库的动态链接库和可执行文件,验证是否成功把三方库加入OpenHarmonybian编译体系。 成功编译出so和可执行文件,即成功把三方库加入到ohos编译体系。之后还要验证三方库在ohos运行,功…

英语新概念2-回译法-lesson8

乔桑德斯有着我们镇上最漂亮的花园。附近的每一个人每年都参加“最美花园比赛”,但是每年都是乔赢得比赛。比尔芙丽丝的花园比乔的花园大,但是乔的花园更有趣。他有整洁的小径以及一座木桥架在一个池塘上。我也喜欢花园,但是我不喜欢辛勤劳作…

企业网络日益突出的难题与SD-WAN解决方案

随着企业规模的迅速扩张和数字化转型的深入推进,企业在全球范围内需要实现总部、分支机构、门店、数据中心、云等地点的网络互联、数据传输和应用加速。SD-WAN作为当今主流解决方案,在网络效率、传输质量、灵活性和成本等方面远远超越传统的互联网、专线…

【经典算法】LeetCode 136:只出现一次的数字(Java/C/Python3实现含注释说明,Easy)

个人主页: 进朱者赤 阿里非典型程序员一枚 ,记录平平无奇程序员在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) 目录 题目描述思路及实现方式一:使用异或运算(推荐)思…

【论文笔记 | 异步联邦】Asynchronous Federated Optimization

论文信息 Asynchronous Federated Optimization,OPT2020: 12th Annual Workshop on Optimization for Machine Learning,不属于ccfa introduction 背景:联邦学习有三个关键性质 任务激活不频繁(比较难以达成条件)&…

C++ ─── 操作符重载和赋值重载

目录 赋值运算符重载 运算符重载 赋值运算符重载(赋值重载operator) 前置和后置重载 赋值运算符重载 运算符重载 C为了增强代码的可读性引入了运算符重载 , 运算符重载是具有特殊函数名的函数 ,也具有其返回值类型&#xff0c…

某手滑块逆向流程分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly93d3cua3VhaXNob3UuY29tL3Byb2ZpbGUvM3h4Ymt3ZDhta250ZWFj 参数流程…

开发工具:推荐一款实用的浏览器查看json插件(附下载)

目录 插件简介 支持的 mime类型 插件特点 “Tree”视图支持的快捷键列表: “Code”视图支持的快捷键列表: 安装方法 使用效果 插件简介 “JSON Beautifier”扩展程序是一个实用工具,可方便查看、编辑、格式化、验证和导出JSON页面。该扩展程序无需任何设置即可运行…

# Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(四) -实现 service2 子模块。

Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(四) -实现 service2 子模块。 1、在 service2 子模块下的 service-2-api 二级子工程中,定义服务接口 创建 ProviderService.java /*** C:\java-test\idea2019\nacos_discovery\nacos-mi…

【Java开发指南 | 第三篇】Java 空行、强制类型转换及基本数据类型

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 Java 空行强制类型转换Java 基本数据类型内置数据类型引用类型 Java 空行 空白行或者有注释的行,Java 编译器都会忽略掉。 强制类型转换 当需要将一个数据类型转换为另一个数据类型时&#xff0c…

Cat6 屏蔽与非屏蔽:决定最佳选择

Cat6 电缆通常用于现代网络中的高速以太网数据传输。它们有两种类型:屏蔽 (STP) 和非屏蔽 (UTP)。这两种电缆之间的主要区别在于它们对电磁干扰 (EMI) 和串扰的抵抗力。 屏蔽 Cat6 电缆具有额外…

python代码打包exe文件

创建和激活虚拟环境 创建虚拟环境 首先让我们创建一个虚拟环境。你可以使用 venv 模块来创建一个虚拟环境。以下是创建虚拟环境的步骤: 打开终端(或命令提示符):进入你想要创建虚拟环境的目录。 运行以下命令来创建虚拟环境&a…

谷歌pixel6/7pro等手机WiFi不能上网,显示网络连接受限

近期在项目中遇到一个机型出现的问题,先对项目代码进行排查,发现别的设备都能正常运行,就开始来排查机型的问题,特意写出来方便后续查看,也方便其它开发者来自查。 设备机型:Pixel 6a 设备安卓版本:13 该方法无需root,只需要电脑设备安装adb(即Android Debug Bridge…

protobuf 编码原理

简介 Protocol Buffers(protobuf),它是 Google 开发的一种数据序列化协议(与 XML、JSON 类似)。 优点: 效率高:Protobuf 以二进制格式存储数据,比如 XML 和 JSON 等文本格式更紧凑…

C++这个编程语言以后会消失吗,就像以前70后学的编程语言?

随着AI自举编程的到来,绝大多数人类编程语言都会消失,只有 Scratch 这类启智语言作为儿童玩具保留下来。目前看来这一天不远了。 AI自举编程首先无需遵循这种可读文本变为二进制操作码的套路,它本身就是二进制的。而后,一旦智能制…

全局视角观看Python备忘录-英文版

全局视角观看Python备忘录-英文版