MATLAB与其他语言的接口问题
Matlab与其他语言和软件的接口问题
1)如何在Matlab中读取Excel的xls数据文件?
使用xlsread()函数,或者使用excel的ActiveX接口来进行更复杂的操作。
2)如何在Excel中嵌入Matlab?
如果你的Matlab安装有ExcelLink,它可以实现Excel与Matlab直接的数据交换,可以在Excel中直接调用matlab的函数,进行绘图或者数据处理。
不过如果没有安装ExcelLink,你仍然可以使用Matlab的ActiveX接口来调用matlab,下面是一个Excel宏函数,作为例子:
Sub CallMatlab()
' Dimension variables
Dim MatLab As Object
Dim Result
Dim Invals(3, 4) As Double
Dim MImag() As Double
Dim i, j As Integer
' Invoke Matlab
Set MatLab = CreateObject("Matlab.Application")
' Read Invals from current spreadsheet
' (Assume Invals stored in B3:E5)
For i = 0 To 2
For j = 0 To 3
Invals(i, j) = ActiveSheet.Range(Cells(i + 3, j + 2), Cells(i + 3, j +
2)).Value
Next j
Next i
' Send Invals to Matlab
Call MatLab.PutFullMatrix("a", "base", Invals, MImag)
' Send instructions to Matlab
Result = MatLab.Execute("b=a.^2;")
' Retrieve Result
Call MatLab.GetFullMatrix("b", "base", Invals, MImag)
' Store Result in B8:E10
ActiveSheet.Range("B8:E10").Value = Invals
End Sub
3)mcc,mex,mbuild都是作什么用的?
mcc(生成c/cpp文件)-----m--mex------ mex/dll---x--mbuild-----C/C++ compiler----独立执行的程序
mex文件是一种编译后的动态连接文件,需要在matlab中执行,优点是执行速度比m文件快,而且如果你不想提供m文件源码,可以使用编译后的mex/dll文件。
mbuild通过调用外部的c/c++编译器,把mcc翻译成的c/c++源码与matlab的c/c++数学库、图形库链接,得到独立执行的可执行程序。