matlab和C/C++混合程式設計--Mex (六)引數傳遞
最近的專案需要matlab和C的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將Mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫Mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題--結構到底如何轉換,並且後面會重點說一下自己的程式。
一、Mex的結構
先看一個簡單的程式(該程式儲存在matlab主目錄下名字是mexDemon.cpp,或者在主目錄下新建一個.cpp檔案):
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 |
#include
"mex.h"
//加入標頭檔案,該標頭檔案在VS2010中無法include,但是不影響其在matlab中的編譯,反而在matlab編譯還需要include它
#include
<vector>
using namespace std;
void mexFunction( int nlhs,
mxArray *plhs[], int nrhs, const mxArray
*prhs[])
//mexFunction就類似於main函式
{
//nlhs代表的是輸出引數的個數
//plhs是一個指標陣列,裡面的指標指向mxArray型別,每一個指標指向一個輸出 //nrhs代表的是輸入引數的個數
//prhs是一個指標陣列,裡面的指標指向mxArray型別,每一個指標指向一個輸入
vector<vector< double >
> array2d;
double *z;
plhs[0]
= mxCreateDoubleMatrix( 5, 6, mxREAL); //第一個輸出是一個5*6的矩陣
z
= mxGetPr(plhs[0]); //獲得矩陣的第一個元素的指標
array2d.resize(5);
int ii
= 0;
for ( int i
= 0; i < 5; i++){ for ( int j
= 0; j < 6; j++){
z[i*6
+ j] = ii; //指標訪問矩陣是列優先的,請自己迴圈程式和分析輸出結果
ii++;
}
}
相關推薦matlab和C/C++混合程式設計--Mex (六)引數傳遞最近的專案需要matlab和C的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將Mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫Mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題--結構到底如何轉換 C#基礎知識-引用類型和值類型的區別(六)值類型 type 調用 執行 new 內存堆 ada ont 不同類 在第一篇中我們介紹了C#中基本的15種數據類型,這15種數據類型中又分為兩大類,一種是值類型,一種是引用類型。值類型有sbyte、short、long、int、byte、ushort、uint、u C程式設計語言(六)UNIX系統介面系統介面和標準的C庫,是不同的兩個範疇。 標準C庫,各個平臺的C編譯器都應該支援,具有跨平臺的性質。 系統介面則是系統相關的,UNIX的系統介面,在Win上就肯定不能用。 那麼兩者是不是還有聯絡呢,其實是的。標準C庫,跟系統相關的部分,不也是通過系統呼叫/系統介面實現的麼。所以系 C/C++ 泛型程式設計vector(排序)題目描述 對一組輸入的資料(0結束)進行排序輸出。 約定:所有的輸入資料都為正整數,且都不大於100000。 輸入 包括多組測試資料。 每組以0結尾。 輸出 每組輸出1行。輸出排序後的資料(不含0)。 樣例輸入 1 2 3 2 4 0 5 6 2 2 0 C++11 併發程式設計基礎(一):併發、並行與C++多執行緒正文 C++11標準在標準庫中為多執行緒提供了元件,這意味著使用C++編寫與平臺無關的多執行緒程式成為可能,而C++程式的可移植性也得到了有力的保證。另外,併發程式設計可提高應用的效能,這對對效能錙銖必較的C++程式設計師來說是值得關注的。 回到頂部 1. 何為併發 併發指的是兩個或多個獨立的活動在同 c++ 網絡編程(六)TCP/IP LINUX下 socket編程 多播與廣播 實現一次發送所有組客戶端都能接收到send all users 代碼示例 proto 次數 不可 的人 ssa 原文作者:aircraft 原文鏈接:https://www.cnblogs.com/DOMLX/p/9614288.html 一.多播 鍥子:有這麽一種情況,網絡電臺可能需要同時向成 Java的繼承與記憶體結構——有C++基礎的Java入門(六)目錄 一、 繼承概念 1、語法 2、 例項 3、 總結 二、 繼承的記憶體結構 一、 繼承概念 繼承是面向物件最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的資料屬性和行為,並能擴充套件新的能力。 通俗一點:描述事物的時候,如 c語言數字影象處理(六):二維離散傅立葉變換基礎知識 複數表示 C = R + jI 極座標:C = |C|(cosθ + jsinθ) 尤拉公式:C = |C|ejθ 有關更多的時域與複頻域的知識可以學習複變函式與積分變換,本篇文章只給出DFT公式,性質,以及實現方法 二維離散傅立葉變換(DFT) 其中f(x,y)為原影象,F(u, C for Graphic:語言(六)之前我們依次學習了vertex頂點和fragment片段函式分別能做些什麼事情,這次我們就綜合一下,實現一個帶有vertex頂點和fragment片段函式的完整的CG shader看下效果。 比如我喜歡看書,特別是“物理學”和“心理學”的 C語言基礎 入門學習(六)1.如何大小端轉換 bool IsBig() { int sh = 0x12345678; char*p = (char*)&sh; if (*p == 0x78) { return false; } return true; } int 資料結構程式設計回顧(六).學生成績管理系統-冒泡、快排、希爾、雙向冒泡和堆排題目六:學生成績處理系統 設計要求:本設計要求採用順序儲存結構,實現關於學生成 績處理的相關問題,包括:學生資訊的錄入、查詢、修改、 排序、確定名次以及資訊的輸出。其中學生資訊包括:學號、 姓名、四門課、總分以及排名;排序方法包括:雙向冒泡排 序、希爾排序、快速排序、堆排序等方法。 選單內容: Java程式設計思想(六)—— 訪問許可權控制一、包:庫單元 包內含有一組類,它們在單一的名字空間下被組織在了一起。例如,在Java的標準釋出中有一個工具庫,它被組織在java.util名字空間下,如果要使用此名字空間下的ArrayList類,可以使用其命名的方式,如下: pu Java程式設計思想(六)第19章-列舉型別目錄: 19.4 values()的神祕之處 通過反編譯列舉類,values()是由編譯器新增的static()方法。編譯器將列舉類(enum)標記為final類,所以enum類無法被繼承。 19.5 實現而非繼承 所有的enum類都繼承自java.lan 網路程式設計 筆記(六) 多程序伺服器程序 - 程序(Process):“佔用記憶體空間的正在執行的程式” - 程序ID :作業系統給程序分配的id,其值大於2,1要分配給作業系統啟動後的首個程序 -linux檢視程序的命令:ps au ;引數a和u列出所有程序的詳細資訊 通過fo MapReduce程式設計例項(六)package com.t.hadoop; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import javascript高階程式設計筆記(六)day 06 作為值的函式 從一個函式返回另一個函式,是一種極為有用的技術。可用於陣列物件進行排序。如下函式:function createComparisonFunction(propertyName) { return function(object1,object WEB開發者之混合開發APP(六), 下拉重新整理下拉重新整理,本文只介紹下拉重新整理重置頁面的情況。同上一篇博文一樣,筆者介紹兩種形式的下拉重新整理方法。 1. mui下拉重新整理 1.1 相對固定的頁面結構 <div id="pullrefresh" class="mui-conte Linux下的socket程式設計實踐(六)Unix域協議和socketpair傳遞檔案描述符UNIX域協議並不是一個實際的協議族,而是在單個主機上執行客戶/伺服器通訊的一種方法,所用API與在不同主機上執行客戶/伺服器通訊所使用的API相同。UNIX域協議可以視為IPC方法之一,Unix域協 演算法入門總結(四)—— 引數傳遞函式在演算法競賽中是不可避免的一部分,使用函式必然存在引數傳遞的問題,在C語言中,引數傳遞有傳值、傳地址、傳陣列、傳函式等方式。 傳值 直接在引數表將變數傳入即可,不會改變該變數的值 傳地址 將 matlab和c++混合程式設計---Mex結構和mexFunction引數傳遞最近的專案需要matlab和C的混合程式設計,經過一番努力終於完成了專案要解決的問題。現在就將Mex的一些經驗總結一下,當然只是剛剛開始,以後隨著學習的深入繼續新增。首先講講寫Mex的一些常規規定,然後我們會重點關注混合程式設計中最難解決資料的問題--結構到底如何轉換 |