在項(xiàng)目過(guò)程中需要在ASP.NET頁(yè)面顯示三維效果的曲面圖,因C#中沒(méi)有相關(guān)的控件(暫時(shí)沒(méi)找到),需要調(diào)用其他軟件實(shí)現(xiàn)此功能,實(shí)現(xiàn)的方法有多種,這里只介紹在C#中調(diào)用matlab函數(shù),實(shí)現(xiàn)繪制三維圖的功能。當(dāng)然,matlab還有強(qiáng)大的數(shù)據(jù)處理能力,如果在C#中涉及到處理大量數(shù)據(jù),也可以通過(guò)該方法調(diào)用matlab函數(shù)。 系統(tǒng)平臺(tái):matlab2013a(破解的2013b未破解完全,謹(jǐn)慎使用) VS2010 注意:將來(lái)使用調(diào)用matlab的C#程序時(shí)候,可以不安裝matlab程序,但必須安裝matlab的運(yùn)行環(huán)境,即MCRinstall文件,這個(gè)在matlab安裝包里面一般可以找到。 操作步驟:1.在matlab的command窗口輸入mbuild(留空格)-setup,選擇編譯器,這里要選擇我們打算調(diào)用matlab的軟件,即VS2010;然后在command窗口輸入deploytool命令,同樣選擇編譯環(huán)境為VS2010。之后,會(huì)彈出下圖1所示界面。注意:這里的Name就是C#里要調(diào)用的dll文件名,Location就是查找dll文件的位置,Type要選擇.NET Asembly,點(diǎn)擊OK按鈕。 圖1 2.出現(xiàn)下圖所示的頁(yè)面,點(diǎn)擊Add Class添加類,這里注意修改默認(rèn)的Class類名,Class類名就是我們?cè)贑#中要使用的類名稱,自己要記下來(lái)。修改完類名點(diǎn)擊Add file添加我們要使用的m文件,如圖3所示,這里m文件的名稱就是我們?cè)贑#中要使用的類的成員函數(shù),也要把這個(gè)名稱記下來(lái)。之后,點(diǎn)擊圖3右上方的編譯按鈕,就會(huì)出現(xiàn)圖4的頁(yè)面,等待出現(xiàn)build finished即可(時(shí)間會(huì)有點(diǎn)長(zhǎng),要5-10分鐘)。這樣,我們?cè)贛ATlab環(huán)境下的操作就完成了,請(qǐng)攝像機(jī)把鏡頭切換到VS2010環(huán)境中~~~ 圖2 圖3 圖4 3.打開(kāi)C#程序的“設(shè)計(jì)”頁(yè)面,在“解決方案資源管理器”里添加“引用”,打開(kāi)圖5所示的界面,這里至少要添加兩個(gè)dll文件,一個(gè)是MWArray.dll(文件目錄為D:\MATLAB\R2011b_x64\toolbox\dotnetbuilder\bin\win64\v2.0),另一個(gè)是我們自己生成的dll文件(目錄在圖1Location中指定的)。 圖5 4.在ASP.Net的***.aspx.cs頁(yè)面下,要注意添加dll文件的至少2個(gè)命名空間,一個(gè)是using MathWorks.MATLAB.NET.Arrays;另一個(gè)是我們自己生成的dll文件的命名空間,如using TuShowOut; 一個(gè)簡(jiǎn)單的例程:建議先使用一個(gè)最簡(jiǎn)單的例程測(cè)試一下我們前面所設(shè)置的編譯環(huán)境是否正確,不要直接調(diào)用項(xiàng)目中用到的復(fù)雜的matlab函數(shù)。 1.matlab程序如下:
- function y=raicos(t)
- result=2t;
- end
復(fù)制代碼 2.在C#中調(diào)用matlab的函數(shù),使用上面的4個(gè)步驟,添加引用之后,C#程序如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using MathWorks.MATLAB.NET.Arrays;//系統(tǒng)dll文件
- using Demodll;//自己生成的dll文件
- namespace WebApplication1
- {
- public partial class WebForm26 : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- demo h = new demo();//demo為class名稱,h為定義的成員函數(shù)
- MWArray x;//定義x為矩陣變量,將普通數(shù)轉(zhuǎn)化為matlab能識(shí)別的類型
- x = demo.raicos((MWArray)i);//調(diào)用matlab里的raicos函數(shù)
- }
- }
- }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
C#調(diào)用MATLAB.doc
(254.5 KB, 下載次數(shù): 20)
2018-9-14 17:11 上傳
點(diǎn)擊文件名下載附件
C# 下載積分: 黑幣 -5
|