欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      MATLAB與C讀書筆記

      時間:2019-05-13 09:31:42下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《MATLAB與C讀書筆記》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《MATLAB與C讀書筆記》。

      第一篇:MATLAB與C讀書筆記

      基于C進行dSPACE仿真的技術路線

      dSPACE關聯(lián)于MATLAB的Simulink,由Simulink提供計算模塊,dSPACE提供Realtime Interface(RTI)的形式模塊化輸入輸出端口。MATLAB基于Simulink的Realtime Workshop編譯生成目標機器可執(zhí)行代碼,并下載到dSPACE中執(zhí)行。

      C與MATLAB聯(lián)系密切,MATLAB提供了多種利用C實現(xiàn)高效、快速運算編程的方法,并能實現(xiàn)針對不同平臺的可執(zhí)行代碼生成和優(yōu)化。不斷升級完善的Realtime Workshop以及Realtime Workshop Embedded Coder保證了C代碼可以稍作修改即直接載入處理器執(zhí)行運算,并且得到了DO178B、IEC61508認證,在航空航天和國防領域有廣泛應用。配合Simulink的Model Advisor檢查模型代碼,使模型易于改進。MATLAB提供的Model Reference可以將模塊獨立處理,采用增進式代碼修改,適合于大型系統(tǒng)的模塊化設計。

      本文需要探討的問題是如何利用大量已有的C文件進行dSPACE仿真。因此,將首先介紹MATLAB中與C有關的External Interfaces和S-Function,然后再根據(jù)這些介紹尋找較為簡捷的實現(xiàn)方案。

      1、External Interfaces

      提供MATLAB與外部程序和設備進行輸入輸出通訊的接口。

      1)Mat文件

      MATLAB的數(shù)據(jù)文件即Mat文件,它可以實現(xiàn)數(shù)據(jù)在平臺之間的轉(zhuǎn)移或外部程序與MATLAB的數(shù)據(jù)傳遞。MATLAB提供了一些前綴為mat的函數(shù),可以在C中直接調(diào)用。通過專用的API編譯,Window環(huán)境下為matlabroot bin win32 mexopts *engmatopts.bat,編譯在cmd窗口執(zhí)行。

      2)共享庫(Shared Libraries)

      Windows環(huán)境下共享庫是動態(tài)鏈接文件,后綴為.dll,用C等編寫,在MATLAB中調(diào)用。利用loadlibrary()和unloadlibrary分別完成動態(tài)鏈接文件的裝載和卸載,裝載完成后可以使用calllib()函數(shù)在MATLAB中調(diào)用動態(tài)庫中函數(shù)。

      3)Mex文件

      Mex是MATALAB Eexcutable的縮寫,類似于共享庫,Mex文件可以在MATLAB命令行中直接調(diào)用。Mex主要應用于

      A、直接使用已經(jīng)編寫的C程序,而不需重新編寫m文件;

      B、對運算性能要求較高的應用場合。

      MATLAB有四種Mex文件:

      1、源Mex文件,用C書寫的代碼;

      2、二進制Mex文件,MATLAB中執(zhí)行的動態(tài)鏈接進程;

      3、Mex函數(shù)庫,即能夠在MATLAB中使用的API庫;

      4、Mex編譯腳本,將源Mex文件轉(zhuǎn)換成二進制Mex文件的MATLAB函數(shù)。

      源Mex文件中,需要將原C文件中的main改寫成需要使用的函數(shù)名,源Mex文件一般包括三個部分:gateway進程、計算進程和處理器宏。計算進程即編寫的計算函數(shù),其后,要按規(guī)定格式編寫用于建立gateway進程的mxfunction,主要是變量傳遞和解釋,需調(diào)用mex.h文件。編譯采用mex functionname.c的命令形式,編譯后的函數(shù)可以像眾多MATLAB內(nèi)建函數(shù)一樣直接調(diào)用。

      2、MATLAB S-Function

      在MATLAB中可以用m文件、C、C++、Ada和Fortran等編寫Simulink模塊,其中C、C++、Ada和Fortran編寫的S-Function以Mex文件的形式進行編譯。

      以m文件編寫的S-Function有Level1和Level2之分,其中Level2可以調(diào)用更加豐富的S-Function的API資源,并且支持代碼生成(手動書寫,適合于dSPACE與RTI)。

      以C Mex形式編寫的S-Function具有最大的靈活性和功能性,支持面向應用對象編譯(Target Language Compiler TLC)的代碼生成,該代碼自動生成,不需要手動添加編譯文件,可以將算法寫成C Mex的形式,也可以構(gòu)建一個wrapper S-Function去調(diào)用C/C++/Fortran代碼。MATLAB提供了編寫C Mex S-Function的模板文件sfuntmpl_doc.c和用戶界面S-Function Builder。

      MATALB還提供一個Legacy Code Tool(繼承代碼工具?)用于創(chuàng)建能夠調(diào)用C和C++的S-Function,同樣支持TLC,但能夠利用的API有限,適用于僅計算輸出而不計算狀態(tài)的Legacy Code。

      需要注意的是,C Mex S-Function不支持總線輸入輸出,對模型參考也不完全支持;S-Function Builder則不支持總線輸入輸出、向量、多速率采樣、輸入輸出數(shù)量變化等。除上述以代碼區(qū)分S-Function類型外,S-Function也可以分為Noninlined和Wrapper and Fully Inlined兩種。前者即C Mex S-Function,dSPACE提供的應用說明Implementation Guide主要是針對C Mex S-Function。后者是基于TLC代碼生成,多個文件相互獨立。

      1)使用已有的C文件構(gòu)建S-Function

      對已經(jīng)存在的C程序文件,在Simulink中有3種方法:

      A、Wrapper S-Function。

      手寫C S-Function和TLC文件,要求對S-Function的深入了解。

      在Wrapper函數(shù)同一般的S-Function一樣,主要有mdlInitializeSizes()、mdlInitializeSampleTimes()、mdlOutputs()、mdlTerminate()等方法,其中在mdlOutputs()方法中調(diào)用已經(jīng)編寫好的C程序,該C程序按照標準C書寫。

      完成Wrapper函數(shù)的編寫后,在MATLAB命令窗口運行mex命令編譯即可。

      此外還需要編寫TLC文件才能生成RTW代碼,TLC文件基于m編寫,基本的函數(shù)有BlockTypeSetup和Outputs。Wrapper和TLC文件都可以參考MATLAB提供的模板進行編輯。

      B、S-Function Builder。

      通過GUI界面編輯,自動生成S-Function和TLC文件,不強調(diào)對S-Function的熟練掌握。需要創(chuàng)建聲明已有C文件的庫函數(shù),并在Builder面板的Libraries中指定對應的C文件和需引用的庫文件。此外需要調(diào)整初始化、輸入和輸出等一些參數(shù)。完成配置后,點擊Build按鈕即生成S-Function、Wrapper和TLC三個文件。

      C、the Legacy Code Tool。

      通過命令在MATLAB Workspace中定義S-Function,無需掌握S-Function的知識。其基本命令如下:

      def = legacy_code('initialize');

      def.SourceFiles = {'doubleIt.c'};//源C文件

      def.HeaderFiles = {'doubleIt.h'};//庫文件

      def.SFunctionName = 'legacy_wrapsfcn';//S-Function名稱 def.OutputFcnSpec = 'double y1 = doubleIt(double u1)';def.SampleTime = [-1,0];

      legacy_code('sfcn_cmex_generate', def);

      legacy_code('compile', def);

      legacy_code('sfcn_tlc_generate', def);

      通過the Legacy Code Tool與通過S-Function Builder生成的S-Function不同:Builder生成的結(jié)果中,已有的C文件被wrapper函數(shù)調(diào)用,而Legacy Code Tool則直接調(diào)用已有的C文件;通過Builder面板可以定義S-Function的輸入輸出變量名稱,而Legacy Code Tool中僅取默認的y和u。

      2)使用C編寫S-Function

      S-Function的基本結(jié)構(gòu)是:

      #define//函數(shù)名

      #include//函數(shù)頭

      mdl*()//調(diào)用API方法

      #ifdef…endif//尾部聲明

      S-Function的API方法均已mdl開頭,如mdlInitializeSizes()。編寫好的S-Function使用mex命令進行編譯。

      3、結(jié)論

      綜合上述介紹,比較簡單的使用已有C文件進行dSPACE仿真的技術路線有以下3種:

      1).C文件→Mex編譯腳本mexfunction→二進制Mex文件(.mexw32)→Simulink S-Function模塊。

      2).C文件→the Legacy Code Tool→C S-Function和TLC文件→.mexw32文件→Simulink S-Function模塊。

      3).C文件→S-Function Builder→.mexw32文件→Simulink S-Function模塊。

      其中,the Legacy Code Tool允許Simulink直接調(diào)用C代碼,比C S-Function易用。當然,C S-Function更加靈活,功能更加豐富。

      對于只計算輸出的函數(shù),可以直接利用the Legacy Code Tool。而對于需要計算微分方程的函數(shù),則不能簡單的直接利用原有的C文件,需要考慮是單獨編譯微分方程數(shù)值計算方法,還是使用MATLAB自身的ODE方法。

      需要注意的是,dSPACE不支持M/C++/Fortran/Ada編寫的S-Function,因此已有的C文件必須用C編寫。

      第二篇:c語言讀書筆記

      C語言讀書筆記

      ——讀《C程序設計》筆記

      一學期對《c語言程序與設計》的學習與應用使我對c語言產(chǎn)生了濃厚的興趣。C語言程序與設計是一門實踐性很強的課程,不可能只靠聽課和看書就掌握c語言程序與設計,因此必須十分重視動手編寫程序和上機運行程序能力的培養(yǎng)。所以我自己在課后學習了《C程序設計》中的“結(jié)構(gòu)體”部分,以下為在學習過程中所做的筆記。

      一、結(jié)構(gòu)體;

      ?結(jié)構(gòu)體概述:

      結(jié)構(gòu)是一種“構(gòu)造”而成的數(shù)據(jù)類型,在說明和使用之前必須先定義它,也就是構(gòu)造它。

      定義一個結(jié)構(gòu)的一般形式為:

      struct 結(jié)構(gòu)名

      {成員表列};

      成員表列由若干個成員組成,每個成員都是該結(jié)構(gòu)的一個組成成分。對每個成員也必須進行類型說明,其形式為:

      類型說明符 成員名;

      結(jié)構(gòu)名和成員名應該符合標識符的書寫規(guī)定。

      ?結(jié)構(gòu)體變量的定義

      1)先定義結(jié)構(gòu)體,再說明結(jié)構(gòu)變量。

      2)在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)變量。

      3)直接說明結(jié)構(gòu)變量。

      ?結(jié)構(gòu)體變量的引用

      定義結(jié)構(gòu)體型變量的目的就是為了在后續(xù)程序中引用它。

      注意:結(jié)構(gòu)體型變量是一種聚合性變量,可引用的對象有兩個:變量名代表變量的整體,成員名代表變量的各個成員,兩者均可在程序中引用。但應遵守以下規(guī)則:

      1)不能將一個結(jié)構(gòu)體變量作為一個整體進行輸入和輸出。

      2)如果成員本身又屬于一個結(jié)構(gòu)類型,則要用若干個成員運算符,一級一級地找到最低的一級的成員。只能對最低級的成員進行賦值或存取運算。

      3)對成員可以像普通變量一樣進行各種運算(根據(jù)其類型決定可以進行的運算)。?結(jié)構(gòu)體變量的初始化

      像數(shù)組一樣,能夠以值列表的方式為結(jié)構(gòu)體的各個分量數(shù)據(jù)進行初始化。初始化時,將所提供的數(shù)據(jù)按照各分量的順序排列,如果結(jié)構(gòu)分量仍是結(jié)構(gòu),則按最低層類型提供數(shù)據(jù)。另外,還可以通過分別賦值的方式為結(jié)構(gòu)變量的各個分量賦值。

      二、結(jié)構(gòu)體數(shù)組

      數(shù)組的元素也可以是結(jié)構(gòu)體類型的,因此可以構(gòu)成結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組的每一個元素都是具有相同結(jié)構(gòu)體類型的下標結(jié)構(gòu)體變量。在實際應用中,經(jīng)常用結(jié)構(gòu)體數(shù)組來表示具有相同數(shù)據(jù)結(jié)構(gòu)體的一個群體。

      方法和結(jié)構(gòu)變量相似,只需說明它為數(shù)組類型。

      三、結(jié)構(gòu)體類型指針

      ? 指向結(jié)構(gòu)體變量的指針

      結(jié)構(gòu)指針變量說明的一般形式為:

      Struct 結(jié)構(gòu)名 *結(jié)構(gòu)指針變量名

      賦值是把結(jié)構(gòu)變量的首地址賦予該指針變量,不能把結(jié)構(gòu)名賦予該指針變量,而只能將結(jié)構(gòu)體變量賦予該指針變量。

      表示結(jié)構(gòu)成員的三種等效形式:

      1)結(jié)構(gòu)變量.成員名

      2)(*結(jié)構(gòu)指針變量).成員名

      3)結(jié)構(gòu)指針變量->成員名

      ? 指向結(jié)構(gòu)體數(shù)組的指針

      指針變量可以指向一個結(jié)構(gòu)數(shù)組,這時結(jié)構(gòu)指針變量的值是整個結(jié)構(gòu)數(shù)組的首地址。結(jié)構(gòu)指針變量也可以指向結(jié)構(gòu)數(shù)組的一個元素,這時結(jié)構(gòu)指針變量的值是該結(jié)構(gòu)數(shù)組元素的首地址。

      注意,一個結(jié)構(gòu)指針變量雖然可以用來訪問結(jié)構(gòu)變量或結(jié)構(gòu)數(shù)組元素的成員,但是,不能使它指向一個成員。也就是說,不允許取一個成員的地址來賦予它。

      ?結(jié)構(gòu)指針作為函數(shù)參數(shù)

      用結(jié)構(gòu)變量作為函數(shù)參數(shù)進行整體傳送的最好的辦法就是使用指針,這時,由實參傳向形參的只是地址,從而減小了時間和空間的開銷。

      四、動態(tài)內(nèi)存分配

      ? 動態(tài)存儲分配函數(shù)

      為了處理動態(tài)數(shù)據(jù)結(jié)構(gòu),必須在程序的執(zhí)行過程中動態(tài)的分配內(nèi)存。

      1)分配內(nèi)存空間函數(shù)malloc

      調(diào)用時的一般形式:

      (類型說明符*)malloc(size)

      2)分配內(nèi)存空間函數(shù)calloc()

      調(diào)用時的一般形式:

      (類型說明符*)calloc(n,size)

      說明:在內(nèi)存動態(tài)存儲區(qū)中分配n塊長度為“size”字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址,其中(類型說明符*)用于強制類型轉(zhuǎn)換。

      3)釋放內(nèi)存空間函數(shù)free()

      調(diào)用時的一般形式:

      Free(void *ptr);

      說明:釋放ptr所指向的一塊內(nèi)存空間,ptr是一個任意類型的指針變量,它指向被釋放區(qū)域的首地址,被釋放區(qū)應是由malloc()或calloc()函數(shù)所分配的區(qū)域。

      五、注意問題:

      ① 結(jié)構(gòu)體名和結(jié)構(gòu)體變量時兩個不同的概念,不能混淆。結(jié)構(gòu)體名只能表示一個結(jié)構(gòu)形式,編譯系統(tǒng)并不對它分配內(nèi)存空間。只有當某變量被說明為這種類型的結(jié)構(gòu)時,才能對該變量分配存儲空間。

      ② 結(jié)構(gòu)指針變量能更方便的訪問結(jié)構(gòu)變量的各個成員,其訪問一般形式為:

      (*結(jié)構(gòu)指針變量名).成員名或者為結(jié)構(gòu)指針變量→成員名

      ③ 字節(jié)對齊的問題,一般為4,具體依編譯器而定。

      1一個占N 個字節(jié)的變量,存儲在首地址偏移量為N的n倍的地址上、2結(jié)構(gòu)體變量占的總內(nèi)存大小等于它的成員的數(shù)據(jù)類型最大的n倍

      第三篇:c語言讀書筆記

      Vc++讀后感

      閑來無事,跑來圖書館,突然被一本名叫《致程序員之家論壇的所有會員》的書把我的注意力吸引過去了,于是我用心的讀起來了。下面這些是我做的一些筆記。

      應該掌握程序運行的原理與機制:學習VC++6.0 在WINDOWS下編程,就應該了解WINDOWS消息機制。(關于消息機制不用太深入,新手學習一個大概流程就可以了)

      掌握編程的思想:這點就比較難了,C++的編程就是面向?qū)ο?,對象的概念一定要清楚。這點重要是多練習自己動手做做小程序。

      多動腦,多動手,再加上十分的仔細:關于這點就是一個學習態(tài)度的問題了。勤勞和懶惰都是人天生都有的本性,就看我們選擇那一個了。

      在編寫一個程序的時候,要知道為什么要去編它,在程序中的函數(shù)為什么這么調(diào)用,這個程序的內(nèi)存模型是怎樣的?可以這樣說:我們做任何事前都要有目標,有目標才能前進,函數(shù)流程就是一個程序的生命,就像人們血液流動的過程一樣,從心臟出發(fā)經(jīng)過各個臟器,我們要了解的就是經(jīng)過那一些,那一些是主要的臟器,這些臟器是用來干什么的。最終回到那里去。內(nèi)存模型蠻專業(yè)化的詞,不過不用怕,就是數(shù)據(jù)在內(nèi)存客中排列的順序結(jié)構(gòu),誰在前面誰在后面了解就可以了。

      程序語言的學習,是一個循序漸進的過程,切忌急功近利

      這一點我認為最重要,我們往往想靜心學習一點東西都不是很容易,總是想一口氣吃成個大胖子,這種心態(tài),去學習任何事情都不會成功的,筆者自己也是一樣,經(jīng)常想馬上就學會,最后是什么也學不會。只能一步一步來,天才少,努力的人才多。切忌急功近利。

      我們往往會因為不知從何入手而不知不覺中走了彎路,停留于表面,你越是著急,反而越容易走彎路,越是搞不懂,就越是需要我們的耐心,不過我也知道這個說說容易做做難,我的方法是,煩的時候回到原點想想你為什么學習編程,也許會對你好一點。每一個人的情況不同,所以要找對自己最有效果的。

      你所得到的答案,經(jīng)常是最終的答案,而不是中間過程。

      這一點也很懂要,我們經(jīng)常在論壇上要結(jié)果的人,結(jié)果給我們也沒有用,我們要的是過程,只有我們了解了過程才能寫出自己的結(jié)果。要不我們就永遠沒有結(jié)果。

      每個人學習的情況都是不一樣的,所以遇到的問題也是不盡相同,但我們都應該首先嘗試自己是否能夠解決這個問題。我們不要有問題就想到別人,我們要想自己想想可不可以解決,我說的想不是說只想了一次就算數(shù)了,我的想是你一個問題要想好幾次,從不同路角度來看問題,有時候會有突破的,不過一看到難的就去求別人,那是沒用的。

      看完這本書,我受益匪淺,這告訴我們做學問就不應該只停留著一本書上,而是多去翻閱一些相類似的書,多擴展一下自己的知識面。

      第四篇:Matlab 與線性代數(shù)教案

      Matlab 與線性代數(shù)

      一、Matlab 入門:

      1.啟動、退出、運行: 2.窗口介紹: 3.基本符號: =:賦值符號

      [ ]:數(shù)組定義符號 , 區(qū)分列 函數(shù)參數(shù)分隔符;區(qū)分行 取消運行顯示 % 注釋標記

      : 具有多種應用功能

      4.matlab的變量(區(qū)分大小寫): 預定義變量: ans

      pi 相關命令: format(顯示格式 rat long short)

      who whos clear

      5.M 文件(純文本文件,擴展名為.m)建立 修改 保存 運行

      二、Matlab 與線性代數(shù)的基本運算

      1.矩陣的輸入

      數(shù)字矩陣:A=[1 2 3;3 2 1]

      或 A=[1, 2, 3;3, 2, 1] 或 A=[1 2 3 2 1]

      符號矩陣(顯示出來元素之間有逗號): 定義符號變量 sym syms

      用法:(1).sym(‘[a,b,c;b,c,a]’)或 sym(‘[a b c;b c a]’)

      (2).syms a b c

      A=[a b c;b c a]

      2.產(chǎn)生特殊矩陣的函數(shù):

      zeros(m,n)zeros(n)

      ones(m,n)ones(n)eye(n)

      magic(n)rand(m,n)randn(n)% 產(chǎn)生(0,1)區(qū)間均勻分布的隨機矩陣

      3.相關命令:

      round(A)% 表示對矩陣A中所有元素進行四舍五入 length(A)% 返回A的長度(列數(shù))size(A)% 返回A的尺寸,行數(shù) 列數(shù) A(i,j)% 引用矩陣A的第i行第j列元素

      4.矩陣的基本運算

      (1).+-*.*

      (2).轉(zhuǎn)置 A’

      (3).方陣的冪:A^3

      5.求向量組的極大無關組

      A?[?1,?2,?3 ]

      (1).U=rref(A)% U為A的行最簡形

      (2).[U,s]=rref(A)% U為A的行最簡形, s為首非零元所在列組成的向量

      (3).rrefmovie(A)% 返回A的行最簡形,且給出每一步化簡過程

      6.求線性方程組的解

      情形1。Ax=b,其中A為n階可逆陣

      法1: x=inv(A)*b 或 x=A^(-1)*b

      法2: U=rref([A,b])% 返回值U為矩陣的行最簡形,最后一列即為解x。

      情形2。Ax=0, 其中A 為m*n 矩陣,R(A)=r

      法1:U=rref(A), 選定自由變量,得到一組基礎解系

      法2:z=null(A)

      % z的列向量為Ax=0的一組標準正交基。

      情形3。Ax=b, 其中A 為m*n 矩陣, 求通解

      U=rref([A,b])從最后一列找特解,前n列找導出組的基礎解系,然后按格式寫

      出Ax=b的通解。(或先寫出以U為增廣矩陣的同解方程組也可。)

      ?6x1?3x2?2x3?3x4?4x5?5??4x1?2x2?x3?2x4?3x5?4

      例子: ?.4x?2x?3x?2x?x?02345?1?2x?x?7x?3x?2x?112345?(4).(5).(6).(7).方陣行列式 det(A)方陣的秩 rank(A)方陣的逆 inv(A)或 A^(-1)矩陣的除法 左除 右除/

      AB=C

      則 A=C/B B=AC 輸入:A=[6 3 2 3 4;4 2 1 2 3;4 2 3 2 1;2 1 7 3 2];

      b=[5 4 0 1]’;

      U=rref([A,b])?1?0得到:U???0??01/200001000010?3/4?17/20?3/2???2? 6??0???3/2???0??取x2,x5為自由變量,令x2?0,x5?0得Ax=b的特解?*???2?

      ??6???0???

      ??1/2??3/4?????10?????x2??1??0?分別令?????和??得導出組的基礎解系為:?1??0?,?2??1?

      ?????x5??0??1?0?7/2?????0??1?????3x2?4x5?x1??12?x3?x5或:導出組Ax=0的同解方程組:?,x2,x5為自由變量,分別令?x4??7x52???1/2??3/4?????10????x2?1,x5?0和x2?0,x5?1得導出組的基礎解系為:?1??0?,?2??1?。

      ????0?7/2?????0??1?????7.求矩陣的特征值與特征向量

      (1).d=eig(A)% d為矩陣A的特征值構(gòu)成的向量

      (2).[V,D]=eig(A)% D為A 的特征值構(gòu)成的對角陣,V 的列為A的單位特征向

      量,與D中的特征值對應,滿足:A?VDV8.Schmidt 正交化方法

      B=orth(A)% B的列向量為A的列空間的一組標準正交基,換句話說,B的列是

      A的列向量的正交標準化,滿足B*B?eye(rank(A))。

      9.用正交變換化二次型為標準形

      先寫出所給二次型的矩陣A,則A為實對稱矩陣,[V,D]=eig(A)% D 為A的特征值構(gòu)成的對角陣,V的列向量為A的正交單位特征

      向量,次序與D的元素對應。滿足VAV?D?VT?1'?1,即AV?VD。

      AV。

      第五篇:matlab與sql總結(jié)

      總結(jié)

      一個星期前老師給了一個任務,要求用GUI做成一個simulink仿真界面,通過matlab與SQL的連接,然后把仿真結(jié)果存到sql里建的數(shù)據(jù)庫里。從一開始什么都不懂,到現(xiàn)在可以用GUI做一個簡單的界面,以及matlab與sql的連接,這一個星期感慨頗多,尤其是查閱相關資料的痛苦,及找到可以借鑒資料的喜悅,到最后逐漸有了一個清晰的思想。過程如下:

      一首先了解GUI 1.1 GUI簡介[1,2]

      圖形用戶界面(graphical user interface,GUI)是由窗口、光標、按鍵、菜單、文字說明等對象(Ob-ject)構(gòu)成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,比如實現(xiàn)計算、繪圖等假如科技工作者僅僅執(zhí)行數(shù)據(jù)分析、解方程等工作,一般不會考慮GUI的制作。但是如果想向客戶提供應用程序,想進行某種技術、方法的演示,想制作一個供反復使用且操作簡單的專用工具,那么圖形用戶界面是最好的選擇之一。開發(fā)實際的應用程序時應該盡量保持程序的界面友好,因為程序界面是應用程序和用戶進行交互的環(huán)境。在當前情況下,使用圖形用戶界面是最常用的方法。提供圖形用戶界面可使用戶更方便地使用應用程序,不需要了解應用程序怎樣執(zhí)行各種命令,只需要了解圖形界面組件的使用方法;同時,不需要了解各種命令是如何執(zhí)行的,只要通過用戶界面進行交互操作就可以正確執(zhí)行程序。

      在Matlab7.0中,圖形用戶界面是一種包含多種圖形對象的界面,典型的圖形界面包括圖形顯示區(qū)域、功能按鈕空間以及用戶自定義的功能菜單等。為了讓界面實現(xiàn)各種功能,需要對各個圖形對象進行布局和時間編程。這樣,當用戶激活對應的GUI對象時,就能執(zhí)行相應的時間行為。最后,必須保存和發(fā)布自己創(chuàng)建的GUI,使得用戶可以應用GUI對象。在Matlab中,所有對象都可以使用M文件進行編寫。GUI也是一種Matlab對象,因此,可以使用M文件來創(chuàng)建GUI。使用M文件創(chuàng)建GUI的方法也是最基礎的,使用其他方法創(chuàng)建GUI圖形界面時,實現(xiàn)圖形控件的各種功能時,也需要編寫相應的程序代碼。

      除了使用M文件來創(chuàng)建GUI對象之外,Matlab還為用戶開發(fā)圖形界面提供了一個方便高效的集成開發(fā)環(huán)境:Matlab圖形用戶界面開發(fā)環(huán)境(matlab graphical user interface development envi-ronment)簡稱GUIDE,其主要是一個界面設計工具集。Matlab7.0將所有GUI所支持的用戶控件都集成起來,同時提供界面外觀、屬性和行為響應方法的設置方法。除了可以使用GUIDE創(chuàng)建GUI之外,還可以將設計好的GUI界面保存為一個FIG資源文件,自動生成對應的M文件。該M文件包含了GUI初始化代碼和組建界面布局的控制代碼。使用GUIDE創(chuàng)建GUI對象執(zhí)行效率高,可以交互式地進行組件布局,還能生成保存和發(fā)布GUI的對應文件。

      FIG文件:該文件包含GUI圖形窗口及其子對象的完全描述,包含所有相關對象的屬性信息,可以調(diào)用hgsave命令或者使用M文件編輯器的File>Save命令生成該文件。FIG文件是一個二進制文件,包含系列化的圖形窗口對象。所有對象的屬性都是用戶創(chuàng)建圖形窗口時保存的屬性。該文件最主要的功能是對象句柄的保存。

      M文件:該文件包含GUI設計、控制函數(shù)及控件的回調(diào)函數(shù),主要用來控制GUI展開時的各種特征。該文件基本上可以分為GUI初始化和回調(diào)函數(shù)2個部分,控件的回調(diào)函數(shù)根據(jù)用戶與GUI的具體交互行為分別調(diào)用。應用程序M文件使用open-fig命令來顯示GUI對象,但是該文件不包含用戶界面設計的代碼,對應代碼由FIG文件保存。1.2 設計GUI步驟

      簡單說來,一個好的界面應遵循以下3個原則:簡單性(Simplicity)、一致性(Consistency)及習常性(Familiarity)。界面制作包括界面設計和程序?qū)崿F(xiàn)。具體制作步驟如下[3,4]: 1)分析界面所要求實現(xiàn)的主要功能,明確設計任務;2)在稿紙上繪出界面草圖,并站在使用者的角度來審查草圖;3)按構(gòu)思的草圖,上機制作(靜態(tài))界面,并對其進行檢查;4)編寫界面動態(tài)功能的程序,對功能進行逐項檢查。

      以上過程只是一般原則,在設計中,步驟之間也可能要交叉執(zhí)行或復合執(zhí)行;設計和實現(xiàn)過程往往不是一步到位的,可能需要反復修改,才能獲得滿意的界面。建議先進行界面布局編碼,后進行動態(tài)交互功能的編碼。

      二數(shù)據(jù)庫與matlab的連接

      2.1 ODBC簡介[5]

      ODBC(開放式數(shù)據(jù)庫的連接)是一種應用程序的接口(API)。這種接口提供了獨立于任何的數(shù)據(jù)庫管理系統(tǒng)編寫應用程序的能力。ODBC通過ODBC驅(qū)動程序提供了對不同的數(shù)據(jù)庫供應商的一組應用程序接口來給特殊的數(shù)據(jù)庫管理系統(tǒng)(DBMS)。用戶的應用程序使用這組API來調(diào)度ODBC驅(qū)動程序,然后驅(qū)動程序通過SQL語句同DBMS發(fā)生聯(lián)系。DBC提供了數(shù)據(jù)庫管理系統(tǒng)的標準接口,從而使應用人員在編程時不必關心底層的DBMS,大大提高了工作效率。2.2 32位matlab與32 位sql位數(shù)據(jù)庫之間的連接 2.2.1數(shù)據(jù)庫的建立

      在SQL Server2008中建立數(shù)據(jù)庫test,在其中建立表stock。2.2.2 SQL數(shù)據(jù)源的配置

      建立ODBC數(shù)據(jù)源:控制面板->管理工具->ODBC數(shù)據(jù)源->用戶DNS。點擊“添加”,數(shù)據(jù)源名稱可任意命名。服務器選擇自己指定的。2.2.3.MATLAB連接數(shù)據(jù)庫M文件的編寫 1 連接數(shù)據(jù)庫 代碼如下

      >> conn=database('test','sa','123')%test是剛剛建立的數(shù)據(jù)庫名稱 %sa是數(shù)據(jù)庫登陸名%‘123’是數(shù)據(jù)庫登陸密碼 2 檢驗數(shù)據(jù)庫連接狀態(tài)

      >> Ping(conn);%用于查看現(xiàn)在數(shù)據(jù)庫連接狀態(tài) 3 數(shù)據(jù)寫入

      >>expdata=[2001 7 12 000001 0.123432];>>fastinsert(conn,{'year','month','day','id','stock_return'},expdata);備注:

      (1)Conn一個變量,是用于保存數(shù)據(jù)庫連接字符竄的,conn=database('test','sa','123');只要數(shù)據(jù)庫已經(jīng)連接上,后面就可以直接引用。

      (2)'year','month','day','id','stock_return'是數(shù)據(jù)庫表格中的字段名(3)expdata=[2001 7 12 000001 0.123432]是我們要寫入數(shù)據(jù)庫的信息,分別對應于數(shù)據(jù)表中的各個字段。這里我們寫入數(shù)據(jù)庫的是number型的,因此矩陣式數(shù)字型。即:expdata=[2001 7 12 000001 0.123432]。(4)寫入數(shù)據(jù)前提是已經(jīng)成功連接數(shù)據(jù)庫。4 數(shù)據(jù)的查詢 代碼:

      >>curs=(conn,'select * from test.dbo.stock')%建立數(shù)據(jù)庫的連接 >>curs=exec(conn,'select * from test.dbo.stock where id=1')%從test數(shù)據(jù)庫,stock表格里面選擇 股票代碼為1的股票的所有信息 >>curs=fetch(curs)%取回數(shù)據(jù)庫游標里面的數(shù)據(jù); >>curs.data%讀取游標里面的數(shù)據(jù) 5 顯示查詢后的信息: >>curs.data 6關閉鏈接對象和游標——close 當不再使用數(shù)據(jù)庫的鏈接對象時要及時關閉,這樣才能及時的釋放出內(nèi)存,而且每次鏈接后所需要的內(nèi)存量是非常大的,要是不及時關閉的話對后續(xù)計算的影響將非常非常的大。close(curs)close(conna)

      2.3 64位matlab與64位sql數(shù)據(jù)庫之間的連接(以下為網(wǎng)絡整理未證實)

      64位Matlab無法通過ODBC接口訪問SQL Server,我們可以跳出ODBC,而直接使用JDBC來訪問數(shù)據(jù)庫

      第一步,從Microsoft.COM 下載Microsoft SQL Server JDBC Driver 3.0,下載地址可以將上述關鍵字扔進Google中搜索就得到了。解壓縮可以得到很多文件,我們需要的是其中的sqljdbc4.jar和sqljdbc.jar這兩個文件。其中后者是前者的子集,只要不出問題,直接使用前者就可以了。

      第二步,在Matlab中加入jar。具體做法是找到“classpath.txt”文件,例如我的這個文件位置是 “D:Matlab2010Btoolboxlocalclasspath.txt”,在文件的最后加入sqljdbc4.jar的完整路徑,例如我的是:“D:/sqljdbc30/enu/sqljdbc4.jar”,注意斜杠怎么寫。

      第三步,啟動Matlab,啟動過程中如果沒有出錯,那么這個JDBC Connector就可以用了。

      上面三步就把JDBC Connector建好了。接下來我們就開始連接數(shù)據(jù)庫。第一步,建立一個到數(shù)據(jù)庫的連接。假設SQL Server地址是 192.30.1.117,端口是 1433,數(shù)據(jù)庫名稱是RTQ,用戶名user,密碼 pwd,那么用下面的語句建立一個到該數(shù)據(jù)庫的連接。

      conn=database('RTQ','user','pwd','com.microsoft.sqlserver.jdbc.SQLServerDriver',...'jdbc:sqlserver://192.30.1.117:1433;databaseName=RTQ');

      參考文獻

      [1]MATLAB Application Program Interface Guide[C],TheMathworks Inc,1999 [2]王躍強、王紀龍、王云才,VB程序中實現(xiàn)調(diào)用MATLAB的方法[J],計算機應用,2001,vol.21,No.2 [3]劉炳文編著,精通Visual Basic 6.0中文版[M]北京:電子工業(yè)出版社,1999.7 [4]劉衛(wèi)國,科學計算與MATLAB語言[M],中國鐵道出版社,2000.4 [5]侯春生,陳汝義,袁愛進,喬 毅,唐明新.MATLAB/VB/SQL Server編程實現(xiàn)數(shù)據(jù)管理[J].微型電腦應用,Vol.18,No.7,2002

      下載MATLAB與C讀書筆記word格式文檔
      下載MATLAB與C讀書筆記.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        Matlab學習心得系列——001. 先從C語言談起

        Matlab學習系列 ——先從C語言談起 前言 Matlab作為最強大的數(shù)學建模軟件非常有必要系統(tǒng)的學習一下,目前我大概算是【粗略地懂些Matlab,很多語法需要現(xiàn)用現(xiàn)查】的水平,所......

        MATLAB總結(jié)與上機指南

        化工計算中常用的MATLAB命令總結(jié) 化學工程中的計算問題一般比較復雜, 其操作的數(shù)據(jù)對象通常是數(shù)組, 具體計算涉及到插值、求積分、參數(shù)擬合、解常微分和偏微分微分方程、解......

        信號與系統(tǒng) MATLAB實驗報告

        院系: 年級: 姓名: 實驗時間: 實驗地點: MATLAB實驗報告 專業(yè):班號: 學號:1 《信號與系統(tǒng)》實驗一 連續(xù)時間信號的表示及可視化 實驗題目: f(t)??(t);f(t)??(t);f(t)?eat(分別取a?0及a?0); f(t)......

        MATLAB與控制系統(tǒng)仿真實驗報告

        《MATLAB與控制系統(tǒng)仿真》 實驗報告 2013- 2014學年 第 1 學期 專業(yè): 班級: 學號: 姓名: 實驗三 MATLAB圖形系統(tǒng) 一、實驗目的: 1.掌握繪制二維圖形的常用函數(shù)。 2.掌握繪制三維......

        Matlab與Simulink仿真學習心得

        Matlab與Simulink仿真學習心得 班級:07610 學號:072016 姓名:呂天雄 一 Matlab學習心得體會與編程實踐 學習Matlab的心得體會 真正開始接觸Matlab是大二上就開始了,到現(xiàn)在已經(jīng)一......

        matlab作業(yè)題

        第一章 MATLAB環(huán)境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、歷史命令窗口、當前目錄窗口、工作空間窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、歷史命令......

        Matlab心得體會

        Matlab心得體會 10金融3 呂淼 2010241125 在為學習這門課前就聽說了他的強大,因為現(xiàn)在的經(jīng)濟模型都是需要這些分析軟件的,也曾聽說金融的未來方向是需要數(shù)學等等作為依托的。......

        Matlab心得體會

        Matlab心得體會 10金融3 呂淼 2010241125 在為學習這門課前就聽說了他的強大,因為現(xiàn)在的經(jīng)濟模型都是需要這些分析軟件的,也曾聽說金融的未來方向是需要數(shù)學等等作為依托的。......