怎样用matlab打开mw文,C# matlab混合编程 MWArray使用笔记
C# matlab混合編程
徐凱Email:xukai19871105@http://www.doczj.com/doc/1a6e191fff00bed5b9f31dbf.html
這幾天突然想搞一搞以前沒有搞定的MATLABC#混合編程,今天把原來編寫的代碼拿出來看看,然后結合網上一些正確的和一些錯誤的代碼看看,最后詳細參考了MATLAB的幫助文檔,總算搞定了C#和MATLAB的混合編程。當然也不是完全搞定,僅僅完成了很小的一部分。總結一下,也就是熟悉MW Array 和.NET之間的數據類型轉換。下面就和大家分享一下吧。
查看MATLAB提供一個最簡單的關于繪圖函數的例子,我先實踐了一下MATLAB中的代碼,發現發現有問題,有點懷疑matlab幫助文檔的代碼有問題,雖然這種情況真的非常的少見,但是后來證明我的懷疑是正確的。MATLAB原來C#的代碼大概是這樣的。
//二維數組,Y=X^2
double[,] plotValue = new double[10, 2];
for (int i = 0; i < 10; i++)
{
plotValue[i, 0] = i;
plotValue[i, 1] = i * i;
}
//實例化Calculater對象
Calculater myCalculater = new Calculater();
//調用drawgraph方法
myCalculater.drawgraph((MWNumericArray)plotValue);
C#的代碼中說起來也非常簡單,聲明一個二維數組,使用for循環給每一個元素賦值,這個數組的第0列是X坐標的值,數組的第1列是Y坐標的值,兩個坐標的關系是Y=X^2。而MATLAB中m文件的函數如下:
function drawgraph(coords)
plot(coords(1,:), coords(2,:));
MATLAB的代碼的意思也很簡單,以coords矩陣的第1行的所有列為X坐標,第2行的所有列為Y軸。在這里一看發現了一個問題,我自己心里想可能是matlab提供的范例似乎有點問題,C#創建的數組是10行2列的,而drawgraph的函數似乎想接收一個2行10列的數據。這樣導致的兩個結果,第一,我個人總是得不到想要的結果,總給我畫一個空圖,這也是我上次嘗試的時候放棄的原因。第二,由于這個debug存在,所以我就仔細研究了MW Array這個類型和與C#之間的類型轉換,這也是就是自學的快樂所在,解決一個問題還可以學到很多其他的東西,所以我每次都“樂此不疲”。
話說回來,如果把這個行列的關系搞清楚的話,就可以得到想要的結果。例如我把matlab的m文件重寫成這樣的形式
function drawgraph(coords)
plot(coords(:,1), coords(:,2),'*');
那么這條拋物線就很自然的得到了,結果如圖所示啊。為了表達的清楚一點,我還把標記換成了*。
總結
以上是生活随笔為你收集整理的怎样用matlab打开mw文,C# matlab混合编程 MWArray使用笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 自动返回,PHP实现自动识别Re
- 下一篇: matlab数值分析拟合实例,数值分析函