Matlab 版 (精华区)

发信人: zjliu (Robusting), 信区: Matlab
标  题: 数学工具FAQ[smth]--第五节:Matlab接口-xls
发信站: 哈工大紫丁香 (Tue Dec 17 15:06:30 2002) , 转信

 

>************************************************************************<
>                     第五节:Matlab与其他语言和软件的接口问题
>************************************************************************<

===================================
1).如何在Matlab中读取Excel的xls数据文件?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. BigGreen/MathTools#

        使用xlsread()函数,或者使用excel的ActiveX接口来进行更复杂的操作,
        参见:
        http://www.mathworks.com/support/solutions/data/25179.shtml


===================================
2).如何在Excel中嵌入Matlab?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        如果你的Matlab安装有ExcelLink,它可以实现Excel与Matlab直接的数
        据交换,可以在Excel中直接调用matlab的函数,进行绘图或者数据处理。

        不过如果没有安装ExcelLink,你仍然可以使用Matlab的ActiveX接口来
        调用matlab,下面是一个Excel宏函数,作为例子:

 #Brett Shoelson(bshoelson@cox.rr.com),2001/11/01,comp.soft-sys.matlab#

        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
 



--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.316毫秒