1. 程式人生 > >MATLAB學習(五)MATLAB中呼叫C語言函式

MATLAB學習(五)MATLAB中呼叫C語言函式

在MATLAB中呼叫C語言,可以共用程式碼,並且提高MATLAB程式的效率。查閱了網上的資料,做了一個整合。

親測效果如下:


1、MATLAB呼叫C語言函式的原理

這篇文章對MexFuntion中的每個變數,傳值過程等都寫得很清楚

2、MATLAB呼叫C語言例項

又在一篇博文中,看到了這個簡單的例子,親測可用。操作步驟:

1.在matlab中新建檔案

程式碼如下:

  1. #include "mex.h"    //標頭檔案必須包含mex.h
  2. double mexSimpleDemo(double *y,double a,double b);           //<a href="http://lib.csdn.net/base/c" class='replace_word' title="C語言知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>C語言</a><a href="http://lib.csdn.net/base/datastructure" class='replace_word' title="演算法與資料結構知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>演算法</a>程式宣告,在最後呼叫時,第一
  3.                 //                 個引數是返回結果
  4. //c語言到matlab變換,以mexFunction命名
  5. void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])  
  6. {  
  7.     double *y;  
  8.     double m,n;  
  9.     //獲取輸入變數的數值大小
  10.     m=mxGetScalar(prhs[0]);  
  11.     n=mxGetScalar(prhs[1]);  
  12.     //獲取輸出變數的指標
  13.     plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);  
  14.     y=mxGetPr(plhs[0]);  
  15.     //呼叫子函式
  16.     mexSimpleDemo(y,m,n);  
  17. }  
  18. //C語言函式  
  19. double mexSimpleDemo(double *y,double a,double b)  
  20. {  
  21.     return *y=(a>b)?a:b;  
  22. }  

儲存為.c格式的檔案

2.在matlab中輸入

     mex mexSimpleDemo.c

3.測試呼叫結果在matlab輸入

a=mexSimpleDemo(5,3)

結果如下:

a=

5

3、除錯Mex檔案問題

這篇博文,在Matlab環境下使用 mex  –g myhilb.c命令進行除錯,但無法加斷點進行單步除錯,故需轉到VS環境下除錯的“VS中單步除錯Mex檔案

”問題。

先挖個坑,回頭再填!微笑

相關推薦

MATLAB學習MATLAB呼叫C語言函式

在MATLAB中呼叫C語言,可以共用程式碼,並且提高MATLAB程式的效率。查閱了網上的資料,做了一個整合。 親測效果如下: 1、MATLAB呼叫C語言函式的原理 這篇文章對MexFuntion中的每個變數,傳值過程等都寫得很清楚 2、MATLAB呼叫C語言例項

SVM支援向量機系列理論SVM幾種核函式的對比

核函式可以代表輸入特徵之間特殊的相似性。 5.1 線性核 形式: K(x,x′)=xTx′ K ( x ,

[轉]在C#呼叫C語言函式靜態呼叫Native DLL,Windows & Microsoft.Net平臺

原文:https://blog.csdn.net/yapingxin/article/details/7288325   對於不太瞭解.Net的人,如果想要了解.Net,我必須給他介紹P/Invoke。P/Invoke是什麼呢?簡單地說,就是在.Net中呼叫原生代碼(Native code)的一

vue.js學習筆記--axios取消請求

部落格:https://fisher-zh.github.io/ 在平時的開發過程中,我們會經常遇到選單切換的問題,在一些切換頻率較低的情況下,在切換到另一個頁面的時候,上一個頁面基本沒有未完成的非同步請求,即時有,在一些情況下也是可以忽略的。但是,在一些切換頻率較高的

DOM學習總結DOM的事件

 什麼是DOM事件? 事件就是當觸發這個事件之後會執行一段程式碼 使用 on 來繫結一個事件 比如:<div onclick="hj()"></div> 常見事件:1.當滑鼠點選某個元素時/或者移動到當前元素上時2.頁面載入時3.改變輸入欄位時4.當HTML表單被提交

python學習:Python類super()和__init__()的關係

1.單繼承時super()和__init__()實現的功能是類似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(sel

Matlab知識點

學習用Matlab求解函式的導數 syms x; dydx = diff(x^2*cos(x)) % 未指明自變數,按預設的自變數輸出導數結果 結果如圖: syms t; % 宣告自變數 d2ydt2 = diff(t*asin(x*t),'t',2) %2表示階數

MATLAB學習Excel讀寫資料

一、安裝WPS專業版(支援VBA巨集環境) 今天看到這篇博文,花了兩個多小時搗鼓了一下,最後終於成功地使我的MATLAB從Excel中讀取資料了!(如下圖所示)。 其實大部分時間都在搗鼓出現的“Microsoft Office Word 需要VBA巨集語言支援來完成此操作。”這個問題,在網上找了各種資料,

SODBASE CEP學習:流式計算的類SQL語言EPL

(本文中類SQL語句建模、單元測試建議使用SODBASE Studio,參考示例見視訊教程。 SODBASE CEP中,類SQL語言EPL(事件處理語言)也叫做SODSQL。其基本寫法為 CREATE QUERY 查詢名稱 SELECT 查詢欄位 FROM 流 PAT

flask學習筆記--模板使用url_for

歡迎加入知了課堂,學習flask之前在檢視函式中使用url_for,實現從檢視函式中跳轉到另一個url。現在我為大家演示如何在模板中使用url_for,實現在頁面點選文字,跳轉至另一個頁面。其實很簡單一、方法1.首先通過檢視函式,渲染出一個頁面@app.route('/')d

Kafka學習Kafka在zookeeper的儲存

1、Kafka在zookeeper中儲存結構圖2、分析2.1、topic註冊資訊需要先啟動zookeeper,用這個命令 zkCli.sh 進入zookeeper。/brokers/topics/[topic] :儲存test的topic的partitions所有分配資訊[z

ArcGIS學習OpenLayers呼叫WMS服務

OpenLayers: OpenLayers是一個開源的js框架,用於在您的瀏覽器中實現地圖瀏覽的效果和基本的zoom,pan等功能。OpenLayers支援的地圖來源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用簡單的圖片作

小小知識點——MATLAB對復數的操作

real ron pre fig 技術 分享 and uva ima MATLAB程序 a=3+4*i %復數 real(a) %求復數的實部 imag(a) %求復數的虛部 abs(a) %求復數的模 angle(a) %求復數的相位 conj(a) %求

C#的深度學習:在ML.NET使用預訓練模型進行硬幣識別

在本系列的最後,我們將介紹另一種方法,即利用一個預先訓練好的CNN來解決我們一直在研究的硬幣識別問題。 在這裡,我們看一下轉移學習,調整預定義的CNN,並使用Model Builder訓練我們的硬幣識別模型。 我們將使用ML.NET代替Keras.NET。為什麼不使用Keras.NET呢?儘管Keras.NE

JAVA學習

java學習 步驟 字符串 關系運算符 幫助 條件判斷 方式 -- lean 一、 調試 步驟1:設置斷點(不能在空白處設置斷點) 步驟2:啟動調試 步驟3:調試代碼(F6單步跳過)筆記本Fn+F6(F5) 步驟4:結束調試 掌握調試的好處? 很清晰的看到,

Wpf學習 數據綁定Binding【小達原創】

per 學習 items style lock lis sof text 繼承 程序的本質是數據+算法,咱們這一篇就看看wpf程序中的數據是怎樣展現在前臺的。 1、咱們新建一個Wpf項目。為該項目增加【data】文件夾,在該文件夾中添加【Person】類,如下圖: 2、打

java學習java類繼承

author java學習 dex int demo [] color javac print 1.制作一個工具類的文檔 javadoc -d 目錄 -author -version arrayTool.java 實例: class arrayDemo {

python學習

module pen pre strong sdfs nbsp from cnblogs bar                   第五章 條件、循環和其他語句 5.1 print和import的更多信息 5.1.1 使用逗號輸出 >>> print

Guava源碼學習EventBus

mmu 類圖 null find sync fab cnblogs table array 基於版本:Guava 22.0 Wiki:EventBus 0. EventBus簡介 提供了發布-訂閱模型,可以方便的在EventBus上註冊訂閱者,發布者可以簡單的將事件傳遞

SQL 初級教程學習

san 16px and sql 逗號 括號 nbsp def per 1.DEFAULT 約束用於向列中插入默認值。 CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,OrderDate