第一篇:matlab 與ccsv5連接總結要點
需要軟件:前期是要安裝VS2010或者VS2008或者VC6、CCS5.5或者CCS6、Matlab2012以上版本。并配置好Maltab的編譯器路徑(mex-setup)
前提假設CCS5安裝路徑如下:
CCS Installation: D:TIccsv5
CCSV5安裝路徑
Code geeneration Tools: D:TIccsv5toolscompilerc2000,編譯器的路徑 如果其它路徑,則需要在下邊的應用中相應的路徑中更改路徑。
【1】 Matlab VS CCSV5 【1】 在matlab 中鍵入xmakefilesetup ,并設置如下圖
圖1 gmake設置
【2】 首先將display operational configuration only的勾選去掉,然后在configuration的下拉中選擇ticcs_c2000_ccsv5,如果沒有,則點擊右上角的New,然后分別在Make Utiliy、Complier、Linker、Archiver、Prebuild、Postbuild、Execute填入一下內容
Make Utiliy:
Make Utility :
D:PROGRA~1MATLABR2013abinwin32gmake(這個路徑是Matlab的編譯路徑)Arguments :-f “[|||MW_XMK_GENERATED_FILE_NAME[R]|||]” [|||MW_XMK_ACTIVE_BUILD_ACTION_REF|||] Complier
:
Complier:
D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000 Arguments :-I“D:/ti/ccsv5/tools/compiler/c2000_6.2.0/include”-fr“[|||MW_XMK_DERIVED_PATH_REF|||]” Linker
Linker: D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000 Arguments :-o [|||MW_XMK_GENERATED_TARGET_REF|||] Archiver
Archievr: D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/ar2000 Arguments:-r [|||MW_XMK_GENERATED_TARGET_REF|||]
Prebuild
:
不填,空著 Postbuild
不填,空著
Execute
執行編譯
Execute Tool:
D:ticcsv5ccs_basescriptingbindss.bat Arguments :“D:PROGRA~1MATLABR2013atoolboxidelinkextensionsticcsccsdemosrunProgram.js” “D:tiXDS100v2.ccxml” “[|||MW_XMK_GENERATED_TARGET_REF[E]|||]” 接著點擊保存即可。,這時將會在C:Documents and SettingsAdministrator我的文檔MATLAB 路徑下產生這樣一個文件名字
ticcs_c2000_ccsv5_clone.m
此文件的內容如下:(如果不想按上邊一步一步配置xmakefiletool,可以將ticcs_c2000_ccsv5_clone.m這個文件拷貝到,(C:Documents and SettingsAdministrator我的文檔MATLAB)路徑下,然后根據自己一些軟件的安裝位置,修改其中的路徑,下面我用綠色標出有可能需要更改的地方。
% NOTE: DO NOT REMOVE THIS LINE XMAKEFILE_TOOL_CHAIN_CONFIGURATION function toolChainConfiguration = ticcs_c2000_ccsv5_clone()%TICCS_C2000_CCSV5_CLONE Defines a tool chain configuration.%
% Copyright 2015 The MathWorks, Inc.% % General
toolChainConfiguration.Configuration = 'ticcs_c2000_ccsv5_clone';toolChainConfiguration.Version = '2.0';
toolChainConfiguration.Description = 'TI CCS v5 C2000 Tool Chain Configuration';
toolChainConfiguration.Operational = true;
toolChainConfiguration.InstallPath = 'D:ticcsv5';% ccsv5安裝路徑 toolChainConfiguration.CustomValidator = '';toolChainConfiguration.Decorator = 'linkfoundation.xmakefile.decorator.c2000CCEv5Decorator';% Make
toolChainConfiguration.MakePath = 'D:PROGRA~1MATLABR2013abinwin32gmake';%matlab 的gmake安裝路徑 toolChainConfiguration.MakeFlags = '-f “[|||MW_XMK_GENERATED_FILE_NAME[R]|||]” [|||MW_XMK_ACTIVE_BUILD_ACTION_REF|||]';toolChainConfiguration.MakeInclude = '';% Compiler
toolChainConfiguration.CompilerPath = 'D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000';ccsv5編譯器安裝路徑
toolChainConfiguration.CompilerFlags = '-I“D:/ti/ccsv5/tools/compiler/c2000_6.2.0/include”-fr“[|||MW_XMK_DERIVED_PATH_REF|||]”';
toolChainConfiguration.SourceExtensions = '.c,.asm,.abs,.sa';toolChainConfiguration.HeaderExtensions = '.h';toolChainConfiguration.ObjectExtension = '.obj';% Linker toolChainConfiguration.LinkerPath = 'D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000';toolChainConfiguration.LinkerFlags = '-o [|||MW_XMK_GENERATED_TARGET_REF|||]';
toolChainConfiguration.LibraryExtensions = '.lib,.cmd';toolChainConfiguration.TargetExtension = '.out';toolChainConfiguration.TargetNamePrefix = '';toolChainConfiguration.TargetNamePostfix = '';% Archiver
toolChainConfiguration.ArchiverPath = 'D:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/ar2000';toolChainConfiguration.ArchiverFlags = '-r [|||MW_XMK_GENERATED_TARGET_REF|||]';
toolChainConfiguration.ArchiveExtension = '.lib';toolChainConfiguration.ArchiveNamePrefix = '';toolChainConfiguration.ArchiveNamePostfix= '';% Pre-build
toolChainConfiguration.PrebuildEnable = false;toolChainConfiguration.PrebuildToolPath = '';toolChainConfiguration.PrebuildFlags = '';% Post-build
toolChainConfiguration.PostbuildEnable = false;toolChainConfiguration.PostbuildToolPath = '';toolChainConfiguration.PostbuildFlags = '';% Execute
toolChainConfiguration.ExecuteDefault = false;toolChainConfiguration.ExecuteToolPath = 'D:ticcsv5ccs_basescriptingbindss.bat';toolChainConfiguration.ExecuteFlags = '“D:PROGRA~1MATLABR2013atoolboxidelinkextensionsticcsccsdemosrunProgram.js” “D:tiXDS100v2.ccxml” “[|||MW_XMK_GENERATED_TARGET_REF[E]|||]”';%matlab,XDS100V2等文件的放置路徑。
% Directories
toolChainConfiguration.DerivedPath = '';toolChainConfiguration.OutputPath = '';% Custom
toolChainConfiguration.Custom1 = '';toolChainConfiguration.Custom2 = '';toolChainConfiguration.Custom3 = '';toolChainConfiguration.Custom4 = '';toolChainConfiguration.Custom5 = '';end
【3】 然后打開模型,并進行設置,如果是2013A已經去掉 target preferences模塊,在configuration中的 code generation 中選擇idelink_ert_tlc,這時下邊會出現code
圖2 TLC文件選擇
Target,點擊它,在target hardware resources中“IDE/Tool Chain”,選擇“Texas Instruments Code Composer Studio v5(makefile generation only)”.注意:首先備份配置,因為這會覆蓋已有的配置。然后設置board為C2000,processor為 F28335
圖3 configuration parameters/Code generation設置
【4】 檢查是否配置成功,在workspace鍵入checkEnvSetup('ccsv5','F28335 eZdsp', 'setup'),這時如果沒有配置成功,系統會自動彈出如下圖對話框,提示選擇安裝路徑等,此過程和xmakefilesetup的設置相似,只不過此處是設置系統環境變量,這樣才能讓軟件通過系統變量找到相關軟件的路徑,如果配置成功顯示如下圖,checkEnvSetup('ccsv5','f28335', 'check),檢查配置
checkEnvSetup('ccsv5','f28335', 'setup'),設置環境變量
圖4 環境變量檢查以及設置
checkEnvSetup('ccsv5','F28335 eZdsp', 'setup')
1.Checking CCSv5(Code Composer Studio)version
Required version: 5.0 or later
Required for
: Code Generation
Your Version
: 5.5.0
### Setting environment variable “TI_DIR” to “D:ticcsv5”
2.Checking CGT(Texas Instruments C2000 Code Generation Tools)version
Required version: 5.2.1 to 6.0.2
Required for
: Code generation
Your Version
: 6.2.0
### Setting environment variable “C2000_CGT_INSTALLDIR” to “D:ticcsv5toolscompilerc2000_6.2.0”
The version found for “CGT” differs from the one used for our software validation.Use it at your own risk.3.Checking DSP/BIOS(Real Time Operating System)version
Required version: 5.33.05 to 5.41.11.38
Required for
: Code generation
Your Version
: 5.42.01.09
### Setting environment variable “CCSV5_DSPBIOS_INSTALLDIR” to “D:tibios_5_42_01_09”
The version found for “DSP/BIOS” differs from the one used for our software validation.Use it at your own risk.4.Checking XDC Tools(eXpress DSP Components)version
Required version: 3.16.02.32 or later
Required for
: Code generation
Your Version
: 3.24.05.48
5.Checking Flash Tools(TMS320C28335 Flash APIs)version
Required version: 2.10
Required for
: Flash Programming
Your Version
: 2.10
### Setting environment variable “FLASH_28335_API_INSTALLDIR” to “D:titidcsc28Flash28_APIFlash28335_API_V210” 【5】 此時在鍵入或者鍵入ccsboardinfo,進行配置查看
過程調試總結:
(1)此配置確實比較麻煩,不同的版本情況不一樣,2010a更復雜一些,不過用ccs3.3沒有問題。一定要設置好ticcs_c2000_ccsv5_clone文件的路徑否則不能打開(而且一定要放在gmakefile指定的User template路徑下面,當然可以更改這個路徑,只要放在與路徑相符的下面即可)。
(2)Matlab2013A已經包含有xmakefile文件。D:Program FilesMATLABR2013atoolboxidelinkextensionsticcsregistryxmakefilecfgc2000_cce_v5.m,但是這里需要根據自己軟件安裝位置進行配置,可以通過修改cceV5.m文件修改,也可以通過xmakefilesetup工具修改,建議使用后者。
(3)問題3:按照網上方法配置后,可以編譯out文件,但是無法實現自動下載,原因有可能是路徑問題,比如“D:PROGRA~1MATLABR2013atoolboxidelinkextensionsticcsccsdemosrunProgram.js” “D:tiXDS100v2.ccxml” “[|||MW_XMK_GENERATED_TARGET_REF[E]|||]”,這里本來是指定運行程序和調用仿真器配置文件下載的,對于D:Program FilesMATLABR2013a,由于路徑存在空格,此處是無法識別,需要改成簡寫格式D:PROGRA~1,或者重新裝matlab這個不現實,對于仿真器配置文件ccxml比較小,可以將其放在其它無空格的路徑下,然后將xmakefile 工具execute 的arguments路徑進行修改。對于有空格的路徑可以改寫為前(6個字母)+(~1)
圖4 編譯成功,但是無法自動下載。
圖5 自動連接下載的路徑配置,arguments的路徑要求無空格。
到此實現了將matlab程序自動編譯并下載到處理器中,無需打開CCS。
Hello,I have successfully import the files(.c and.h generated by simulink/ccs4/5)into a project(build a new project by yourself),at the same time ,we need copy some other.c and.h files that in the matlab toolbox, Last the new project generated.out file ,and can download to the DSP.This is some pictures during building the project:
In the document folder(generated by simulink and CCS),exist some.c.h and.asm, just like the picture of the third answer.需要新建一個CCS工程,將點c和點asm放入SRC中,將.h放入INCLUDE,同時,需要將必要的matlab中的c和h文件放入src和include文件中,In the document folder(generated by simulink and CCS),exist some.c.h and.asm, just like the picture of the third answer.U need build a new ccs project , then take the.c.asm into the SRC, take the.h into the INCLUDE, at the same time ,U need take the necessary.c and.h that exist in the matlab files just like the piceure of the 4th and 5th answer into the SRC and INCLUDE.the SRC and INCLUDE are built by yourself in the CCS project,then what U need do is just detection of error when compile the project。懂了么?
【2】 Matlab與CCSV5的交互命令
clc
清屏
clear('all')或者 clear all clear('mypjt')ccsboardinfo [boardNum,procNum]=boardprocsel mypjt=ticcs 或者
mypjt=ticcs('boardnum',1,'procnum',0)表示選擇的軟件仿真,如果把1改成0則是硬件仿真,從下圖中可以看出
projfile=fullfile(matlabroot,'myprojects','Lab0301-LED','LED.pjt');projpath=fileparts(projfile);open(mypjt,projfile)visible(mypjt,1)
或者mypjt.visible(1)build(mypjt,'all')cd(mypjt,projpath)cd(mypjt, 'Debug')load(mypjt,'LED.out')run(mypjt,'run')運行ccsIDE中的程序
halt(mypjt)
停止運行ccsIDE中的程序 cd(mypjt,projpath)
返回到工程文件 close(mypjt,'LED.pjt')
關閉工程文件
insert(mypjt,'LED.c',20,'break')
在工程文件第20行插入斷點
mypjt.new('mypjt','project')
新建一個名字為mypjt的ccs工程文件
TI ControlSuite
【3】 DSP驅動集成
有些時候,評估板的驅動,并不能滿足自己開發的板子,這時需要使用legacy code tool或者custom code來集成自己開發的驅動。D:matlabR2009btoolboxtargetextensionsprocessortic6000blkslctspecsc6455dsk_dip_led_LCT.m
【4】 DSP PIL Matlab Matlab 2013或者2014可以在線獲取target support package
第二篇:matlab與sql總結
總結
一個星期前老師給了一個任務,要求用GUI做成一個simulink仿真界面,通過matlab與SQL的連接,然后把仿真結果存到sql里建的數據庫里。從一開始什么都不懂,到現在可以用GUI做一個簡單的界面,以及matlab與sql的連接,這一個星期感慨頗多,尤其是查閱相關資料的痛苦,及找到可以借鑒資料的喜悅,到最后逐漸有了一個清晰的思想。過程如下:
一首先了解GUI 1.1 GUI簡介[1,2]
圖形用戶界面(graphical user interface,GUI)是由窗口、光標、按鍵、菜單、文字說明等對象(Ob-ject)構成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產生某種動作或變化,比如實現計算、繪圖等假如科技工作者僅僅執行數據分析、解方程等工作,一般不會考慮GUI的制作。但是如果想向客戶提供應用程序,想進行某種技術、方法的演示,想制作一個供反復使用且操作簡單的專用工具,那么圖形用戶界面是最好的選擇之一。開發實際的應用程序時應該盡量保持程序的界面友好,因為程序界面是應用程序和用戶進行交互的環境。在當前情況下,使用圖形用戶界面是最常用的方法。提供圖形用戶界面可使用戶更方便地使用應用程序,不需要了解應用程序怎樣執行各種命令,只需要了解圖形界面組件的使用方法;同時,不需要了解各種命令是如何執行的,只要通過用戶界面進行交互操作就可以正確執行程序。
在Matlab7.0中,圖形用戶界面是一種包含多種圖形對象的界面,典型的圖形界面包括圖形顯示區域、功能按鈕空間以及用戶自定義的功能菜單等。為了讓界面實現各種功能,需要對各個圖形對象進行布局和時間編程。這樣,當用戶激活對應的GUI對象時,就能執行相應的時間行為。最后,必須保存和發布自己創建的GUI,使得用戶可以應用GUI對象。在Matlab中,所有對象都可以使用M文件進行編寫。GUI也是一種Matlab對象,因此,可以使用M文件來創建GUI。使用M文件創建GUI的方法也是最基礎的,使用其他方法創建GUI圖形界面時,實現圖形控件的各種功能時,也需要編寫相應的程序代碼。
除了使用M文件來創建GUI對象之外,Matlab還為用戶開發圖形界面提供了一個方便高效的集成開發環境:Matlab圖形用戶界面開發環境(matlab graphical user interface development envi-ronment)簡稱GUIDE,其主要是一個界面設計工具集。Matlab7.0將所有GUI所支持的用戶控件都集成起來,同時提供界面外觀、屬性和行為響應方法的設置方法。除了可以使用GUIDE創建GUI之外,還可以將設計好的GUI界面保存為一個FIG資源文件,自動生成對應的M文件。該M文件包含了GUI初始化代碼和組建界面布局的控制代碼。使用GUIDE創建GUI對象執行效率高,可以交互式地進行組件布局,還能生成保存和發布GUI的對應文件。
FIG文件:該文件包含GUI圖形窗口及其子對象的完全描述,包含所有相關對象的屬性信息,可以調用hgsave命令或者使用M文件編輯器的File>Save命令生成該文件。FIG文件是一個二進制文件,包含系列化的圖形窗口對象。所有對象的屬性都是用戶創建圖形窗口時保存的屬性。該文件最主要的功能是對象句柄的保存。
M文件:該文件包含GUI設計、控制函數及控件的回調函數,主要用來控制GUI展開時的各種特征。該文件基本上可以分為GUI初始化和回調函數2個部分,控件的回調函數根據用戶與GUI的具體交互行為分別調用。應用程序M文件使用open-fig命令來顯示GUI對象,但是該文件不包含用戶界面設計的代碼,對應代碼由FIG文件保存。1.2 設計GUI步驟
簡單說來,一個好的界面應遵循以下3個原則:簡單性(Simplicity)、一致性(Consistency)及習常性(Familiarity)。界面制作包括界面設計和程序實現。具體制作步驟如下[3,4]: 1)分析界面所要求實現的主要功能,明確設計任務;2)在稿紙上繪出界面草圖,并站在使用者的角度來審查草圖;3)按構思的草圖,上機制作(靜態)界面,并對其進行檢查;4)編寫界面動態功能的程序,對功能進行逐項檢查。
以上過程只是一般原則,在設計中,步驟之間也可能要交叉執行或復合執行;設計和實現過程往往不是一步到位的,可能需要反復修改,才能獲得滿意的界面。建議先進行界面布局編碼,后進行動態交互功能的編碼。
二數據庫與matlab的連接
2.1 ODBC簡介[5]
ODBC(開放式數據庫的連接)是一種應用程序的接口(API)。這種接口提供了獨立于任何的數據庫管理系統編寫應用程序的能力。ODBC通過ODBC驅動程序提供了對不同的數據庫供應商的一組應用程序接口來給特殊的數據庫管理系統(DBMS)。用戶的應用程序使用這組API來調度ODBC驅動程序,然后驅動程序通過SQL語句同DBMS發生聯系。DBC提供了數據庫管理系統的標準接口,從而使應用人員在編程時不必關心底層的DBMS,大大提高了工作效率。2.2 32位matlab與32 位sql位數據庫之間的連接 2.2.1數據庫的建立
在SQL Server2008中建立數據庫test,在其中建立表stock。2.2.2 SQL數據源的配置
建立ODBC數據源:控制面板->管理工具->ODBC數據源->用戶DNS。點擊“添加”,數據源名稱可任意命名。服務器選擇自己指定的。2.2.3.MATLAB連接數據庫M文件的編寫 1 連接數據庫 代碼如下
>> conn=database('test','sa','123')%test是剛剛建立的數據庫名稱 %sa是數據庫登陸名%‘123’是數據庫登陸密碼 2 檢驗數據庫連接狀態
>> Ping(conn);%用于查看現在數據庫連接狀態 3 數據寫入
>>expdata=[2001 7 12 000001 0.123432];>>fastinsert(conn,{'year','month','day','id','stock_return'},expdata);備注:
(1)Conn一個變量,是用于保存數據庫連接字符竄的,conn=database('test','sa','123');只要數據庫已經連接上,后面就可以直接引用。
(2)'year','month','day','id','stock_return'是數據庫表格中的字段名(3)expdata=[2001 7 12 000001 0.123432]是我們要寫入數據庫的信息,分別對應于數據表中的各個字段。這里我們寫入數據庫的是number型的,因此矩陣式數字型。即:expdata=[2001 7 12 000001 0.123432]。(4)寫入數據前提是已經成功連接數據庫。4 數據的查詢 代碼:
>>curs=(conn,'select * from test.dbo.stock')%建立數據庫的連接 >>curs=exec(conn,'select * from test.dbo.stock where id=1')%從test數據庫,stock表格里面選擇 股票代碼為1的股票的所有信息 >>curs=fetch(curs)%取回數據庫游標里面的數據; >>curs.data%讀取游標里面的數據 5 顯示查詢后的信息: >>curs.data 6關閉鏈接對象和游標——close 當不再使用數據庫的鏈接對象時要及時關閉,這樣才能及時的釋放出內存,而且每次鏈接后所需要的內存量是非常大的,要是不及時關閉的話對后續計算的影響將非常非常的大。close(curs)close(conna)
2.3 64位matlab與64位sql數據庫之間的連接(以下為網絡整理未證實)
64位Matlab無法通過ODBC接口訪問SQL Server,我們可以跳出ODBC,而直接使用JDBC來訪問數據庫
第一步,從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建好了。接下來我們就開始連接數據庫。第一步,建立一個到數據庫的連接。假設SQL Server地址是 192.30.1.117,端口是 1433,數據庫名稱是RTQ,用戶名user,密碼 pwd,那么用下面的語句建立一個到該數據庫的連接。
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程序中實現調用MATLAB的方法[J],計算機應用,2001,vol.21,No.2 [3]劉炳文編著,精通Visual Basic 6.0中文版[M]北京:電子工業出版社,1999.7 [4]劉衛國,科學計算與MATLAB語言[M],中國鐵道出版社,2000.4 [5]侯春生,陳汝義,袁愛進,喬 毅,唐明新.MATLAB/VB/SQL Server編程實現數據管理[J].微型電腦應用,Vol.18,No.7,2002
第三篇:matlab總結
班級: 學號: 姓名:
Matlab學習綜述
MATLAB是一種科學計算軟件,專門以矩陣的形式處理數據。MATLAB將高性能的數值計算和強大的數據可視化功能集成在一起,并提供了大量的內置函數,從而被廣泛地應用于科學計算、控制系統、信息處理等領域的分析、仿真和設計工作,而且利用MATLAB產品的開放式結構,可以非常容易地對MATLAB的功能進行擴充。
MATLAB產品由若干個模塊組成,不同的模塊完成不同的功能,其中主要的核心模塊有MATLAB、MATLAB Toolboxex、MATLAB Compiler Simulink、Simulink Blocksets、Real-time Workshop(RTW)Stateflow。這些產品大體上可以分為以MATLAB為基礎的產品和以Simulink為基礎的產品兩大分支。其中,MATLAB是MATLAB產品家族的基礎,任何其他MATLAB產品產品都以這個模塊為基礎。MATLAB的桌面應用程序開發工具是以MATLAB Compiler為核心的一組編譯工具。Simulink是基于MATLAB的框圖設計環境,可以用來對各種動態系統進行建模,分析和仿真,它的建模范圍廣泛,可以針對任何能夠用數字來描述的系統進行建模。
一種完整的計算機應用語言應該提供對數據的描述和對數據的操作。在M語言中,最常用的數據類型表現手段和形式就是變量和常量,由于MATLAB軟件自身的特點,它是一種以數值計算為基礎的軟件,因此M語言的基本處理單位是數值矩陣或者數值向量,在M語言中統一將矩陣或者向量稱之為數組,因此掌握一些基本的矩陣、向量和數組操作的基本知識就成為了掌握MATLAB軟件的基礎。變量和常量是編程語言中類型的表現手段和形式,掌握變量和常量的概念也是掌握M語言編程的基礎。所謂變量,就是指在程序運行中需要改變數值的量,每一個變量都具有一個名字,變量將在內存中占據一定的空間,以在程序運行的過程中保存其數值,對變量的命名有相應的要求:變量必須以字母開頭,后面可以是字母、數字或者下劃線之間的組合。所謂常量就是在程序運行的過程中不需要改變數值的量。
MATLAB專門以矩陣作為基本的運算單位,首先要掌握向量、矩陣、索引和多維數組的概念,以及在MATLAB環境下創建向量、矩陣和多維數組的方法,以及操作矩陣和多維數值的函數的使用方法。
目前的MATLAB版本中不僅有多達十幾種的基本數據類型。在不同的專業工具箱中還有特殊的數據類型,并且MATLAB還支持面向對象的編程技術,支持用戶自定義的數據類型。獲取MATLAB的數據類型可以在MATLAB命令行窗體中鍵入help datatypes。MATLAB的數據類型包括基本的數值類型,邏輯類型數據、元胞數值、結構和字符串等,需要指出一點,MATLAB的基本數據是雙精度數據類型和字符類型。MATLAB提供了完整的編寫應用程序的功能,這種能力被稱為M語言的高級語言來實現。這種語言是一種解釋性語言,利用該語言編寫的代碼僅能被MATLAB接受,被MATLAB解釋執行。其實,一個M語言文件就是由若干MATLAB的命令組合在一起構成的,和C語言類似。M語言文件都是標準的純文本格式的文件,其文件的擴展名為.m。MATLAB的函數主要有兩類,一類被稱為內建函數,這類函數是由MATLAB的內核提供的,能夠完成基本的運算,例如三角函數、矩陣運算函數等。另外一類函數就是利用高級語言開發的函數文件,這里的函數文件包括用C/FORTRAN語言開發的MEX函數文件,也包括了M函數文件。
M語言文件可以分為兩類,其中一類是腳本文件,另一類是函數文件,腳本文件是最簡單的一種M語言文件。所謂腳本文件就是由一系列的M語言文件指令和命令組成的純文本格式的M文件,執行腳本文件時,文件中的指令或者命令按照出現在腳本文件中的順序依次執行。腳本文件沒有輸入參數,也沒有輸出參數,腳本文件處理的數據或者變量必須在MATLAB的公共工作空間中,腳本文件主要是由注視行和代碼行組成。
函數文件是M文件最重要的組成部分,M語言函數文件能夠接受用戶的輸入參數,并進行計算,然后將計算結果作為函數的返回值返回給調用者,M函數文件和腳本文件不同,函數文件不僅有自己特殊的文件格式,而且不同的函數還分別具有自己的工作空間,函數文件的輸/輸出參數不同,這些輸入/輸出參數在定義的時候不需要指出變量的類型,因為MATLAB默認這些參數都使用雙精度類型,這樣可以簡化程序的編寫。M語言的函數文件不僅可以有一個輸入參數和一個返回值,還可以為M語言函數文件定義多個輸入參數和多個輸出參數,同一個M函數文件中可以包含多個函數。如果在同一個M函數文件中包含了多個函數,那么將出現在文件中的第一個M函數稱為主函數,其余的函數稱為子函數。
經過這么一段時間的學習,對MATLAB有了初步的認識。但是關于它還有很多知識我們所不知道,還有待進一步的學習。以上內容是我對這學期所學課程的總結,可能有些地方總結的不夠到位,因為有些地方學習的不夠深入,所以,以后要更加努力,在MATLAB的學習上多花一些時間,為以后的學習和工作打下基礎。
第四篇:MATLAB總結
目錄
一、Matlab相關說明.....................................................................2
二、Matlab操作注意事項..............................................................2
三、Matlab常用代碼(圖像處理相關)......................................5
四、Matlab常用快捷鍵.................................................................7
五、Matlab學習心得.....................................................................8
一、Matlab相關說明
Matlab是“Matrix Laboratory”的縮寫,意為“矩陣實驗室”。MATLAB和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。
我所使用的Matlab版本是2012a,下文所涉及到圖片、專業術語等都是以此版本為基礎。
二、Matlab操作注意事項
1.打開并運行一個現存的m文件且這個m文件運行時需用到同一級文件夾中的其他文件,會出現如下提示框:
選擇變更文件夾,將當前文件夾變更為這個m文件所在的文件夾。
2.不小心點錯或關閉了各種小窗口,將Matlab恢復成默認布局
點擊桌面—桌面布局—默認
3.查看某個函數的用法
在命令窗口輸入該變量的名稱,回車即可。
4.查找某個函數的用法
在命令窗口輸入help+函數的名稱,回車后會自動顯示該函數的相關信息。
5.運行文件后報錯 如下圖所示,命令窗口中報錯的第一段是錯誤的原因,后面幾段會顯示發生錯誤的文件夾以及在該文件夾中的位置。
點擊文件的名稱,會跳轉出一個提示框,上面顯示了該文件的具體實現功能,如下圖所示。點擊文件名后面的行標號,可以直接跳轉到發生錯誤的那一行。
6.如何編輯界面?
修改如圖所示的fig文件
1.新建一個GUI文件
2.選擇打開現存的GUI文件,點擊Open,就可以對當前界面進行編輯了。
7.如何將MAtlab中默認的current folder修改為自己想要的路徑,每次啟動后都默認是自己 設定的這個路徑?
>>右鍵matlab 快捷方式,屬性-快捷方式-起始位置 填入你自己的工作目錄。8.把圖復制到WORD文件的方法:電機EDIT—>Copy Figure—>Ctrl+V 9.輸入時,標點必須是英文狀態下的
10.大多數情況下,matlab對空格不予處理
11.小括號代表運算級別,中括號用于生成矩陣,大括號用于構成單元數組
12.分號;的作用:不顯示運算結果,但對圖形窗口不起作用。分號也用于區分行,13.逗號,的作用:函數參數分隔符,也用于區分行,顯示運算結果,當然不加標點也顯示運算結果
14.冒號:多用于數組
15.續行號...不能放在等號后面使用,不能放在變量名中間使用,起作用時默認顯藍色 16.雙引號'string'是字符串的標識符 17.感嘆號!用于調用操作系統運算
18.百分號%是注釋號,百分號后面直到行末的語句matlab跳過執行.另外還有一個塊注釋,即對多行一次注釋,會使用到,格式為(注意%{ 和%}都要單獨成行)%{ %} 19.矩陣中用圓括號表示下標,單元數組用大括號表示下標
20.對變量名的基本要求:區分大小寫,不超過63個字符,以字母開頭,只能是字母,數字和下劃線
三、Matlab常用代碼(圖像處理相關)
1.創建一個文件夾 mkdir('D:myData');2.將圖片保存到指定的文件夾
image_source=strcat('result',num2str(loop),'.jpg');imwrite(F.cdata,image_source);3.將電影轉成圖片序列
fnum=size(mov,2);%讀取電影的禎數 for i=1:fnum strtemp=strcat('C:UsersAdministratorDesktopparticalfiltermyself粒子濾波',int2str(i),'.jpg');%將每禎轉成jpg的圖片 imwrite(mov(i).cdata,strtemp,'jpg');end
4、模擬噪聲生成函數和預定義濾波器
① imnoise:用于對圖像生成模擬噪聲,如:
i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模擬高斯噪聲 ② fspecial:用于產生預定義濾波器,如: h=fspecial('sobel');%sobel水平邊緣增強濾波器 h=fspecial('gaussian');%高斯低通濾波器 h=fspecial('laplacian');%拉普拉斯濾波器
h=fspecial('log');%高斯拉普拉斯(LoG)濾波器 h=fspecial('average');%均值濾波器
5、圖像文件I/O函數命令
imfinfo 返回圖形圖像文件信息
語法:info=imfinfo(filename,fmt)info=imfinfo(filename)imread 從圖像文件中讀取(載入)圖像
語法:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(URL,...)[...]=imread(...,idx)(CUR,ICO,and TIFF only)[...]=imread(...,'frames',idx)(GIF only)[...]=imread(...,ref)(HDF only)[...]=imread(...,'BackgroundColor',BG)(PNG only)[A,map,alpha] =imread(...)(ICO,CUR,PNG only)imwrite 把圖像寫入(保存)圖像文件中
語法:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwite(...,Param1,Val1,Param2,Val2...)imcrop 剪切圖像
語法:I2=imcrop(I)X2=imcrop(X,map)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(RGB,rect)[...]=imcrop(x,y,...)[A,rect]=imcrop(...)[x,y,A,rect]=imcrop(...)
6.impixel 確定像素顏色值
語法:P=impixel(I)P=impixel(X,map)P=impixel(RGB)P=impixel(I,c,r)P=impixel(X,map,c,r)P=impixel(RGB,c,r)[c,r,P]=impixel(...)P=impixel(x,y,I,xi,yi)P=impixel(x,y,RGB,xi,yi)P=impixel(x,y,X,map,xi,yi)[xi,yi,P]=impixel(x,y,...)
7.二進制圖像操作函數
applylut 在二進制圖像中利用lookup表進行行邊沿操作 語法:A=applylut(BW,LUT)bwarea 計算二進制圖像對象的面積 語法:total=bwarea(BW)bweuler 計算二進制圖像的歐拉數 語法:eul=bweuler(BW)
8.顏色空間轉換函數
hsv2rgb 轉換HSV值為RGB顏色空間:M=hsv2rgb(H)ntsc2rgb 轉換NTSC值為RGB顏色空間:rgbmap=ntsc2rgb(yiqmap)RGB=ntsc2rgb(YIQ)rgb2hsv 轉換RGB值為HSV顏色空間:cmap=rgb2hsv(M)rgb2ntsc 轉換RGB值為NTSC顏色空間:yiqmap=rgb2ntsc(rgbmap)YIQ=rgb2ntsc(RGB)rgb2ycbcr 轉換RGB值為YCbCr顏色空間:ycbcrmap=rgb2ycbcr(rgbmap)YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 轉化YCbCr值為RGB顏色空間:rgbmap=ycbcr2rgb(ycbcrmap)RGB=ycbcr2rgb(YCBCR)
9.類型轉換函數
im2bw 轉換圖像為二進制圖像
語法:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)im2double 轉換圖像矩陣為雙精度型
語法:I2=im2double(I1)RGB2=im2double(RGB1)I=im2double(BW)X2=im2double(X1,'indexed')double 轉換數據為雙精度型 語法:double(X)unit8、unit16轉換數據為8位、16位無符號整型: i=unit8(x)i=unit16(x)im2unit8 轉換圖像陣列為8位無符號整型
語法:I2=im2unit8(I1)RGB2=im2unit8(RGB1)I=im2unit8(BW)X2=im2unit8(X1,'indexed')im2unit16 轉換圖像陣列為16位無符號整型
語法:I2=im2unit16(I1)RGB2=im2unit16(RGB1)I=im2unit16(BW)X2=im2unit16(X1,'indexed')
四、Matlab常用快捷鍵
1.在命令窗口(Command Window)中:
1)【上、下鍵】――切換到之前、之后的命令,可以重復按多次來達到你想要的命令
2)clc――清除命令窗口顯示的語句,此命令并不清空當前工作區的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear――這個才是清空當前工作區的變量命令,常用語句clear all來完成 4)【Tab】鍵――在command窗口,輸入一個命令的前幾個字符,然后按tab鍵,會彈出前面含這幾個字符的所有命令,找到你要的命令,回車,就可以自動完成。目前討論結果是:matlab6.5版本中,如果候選命令超過100個,則不顯示。而在matlab7以后版本中,則沒有這個限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序運行過程中,可能由于程序編寫的失誤,導致程序不停的運行,在命令窗口輸入“Ctrl+C”可以將運行的程序停下來,而不需要將整個Matlab程序關掉。不過進行此操作的前提是能夠激活切換到命令窗口才行。6)edit+函數名 查看或編輯源文件 7)who 顯示當前變量名列表 8)whos 顯示變量詳細列表
9)which+函數名 證實該函數是否在當前路徑 10)what 列出當前路徑的所有matlab文件 11)load 加載外部文件 12)save 保存文件到外部 13)20.matlab的幫助函數: 14)help 15)help+函數名或help+函數類名 精確查詢 16)helpwin 打開幫助窗口 17)helpwin+函數名 精確查詢 18)helpdesk 打開幫助窗口 19)doc 打開幫助窗口
20)doc+函數名 打開幫助窗口,精確查詢
21)lookfor+關鍵字 這個是matlab中的谷歌,模糊查詢
2.在編輯器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加縮進(對多行有效)2)3)4)5)6)【Ctrl+[】--減少縮進(對多行有效)
【Ctrl+I】--自動縮進(即自動排版,對多行有效)【Ctrl+R】――注釋(對多行有效)【Ctrl+T】――去掉注釋(對多行有效)
【Ctrl+B】――括號配對檢查(對版本6.5有效,但版本7.0無效,不知道是取消了還是換了另外的快捷鍵,請大牛們指點,其他版本沒有測試過)7)【F12】――設置或取消斷點 8)【F5】――運行程序
五、Matlab學習心得
接觸Matlab一個多月,從剛開始連最基本的操作都不會,到現在能夠熟練地運用Matlab解決問題。雖然現在學到的也只是皮毛而已,離精通還相差甚遠,但至少為以后研究生期間的學習打下了良好的基礎。下面我就簡單的談一下這一個月來的學習感想。
首先,想要學好Matlab必須有一定數學基礎。Matlab軟件是與高等數學,計算機科學相結合的軟件。所以,當你學習Matlab時,你也得會一定的數學。你要盡量多的熟悉matlab自帶的函數,及其作用,因為matlab的自帶函數特別多,基本上能夠滿足一般的數據和矩陣的計算,所以基本上不用你自己編函數。這一點對你的程序非常有幫助,可以使你的程序簡單,運行效率高,可以節省很多時間。
其次,要注重基礎知識于實際操作結合。你把基本的知識看過之后,就需要找一個實際的程序來動手編一下,不要等所有的知識都學好之后再去編程,你要在編程的過程中學習,程序需要什么知識再去補充。在遇到問題時,不要光看別人如果解決,也不要光想怎么解決,自己坐下來,動手自己解決一下,那你就會把不是你的知識變成自己的知識。
最后,也是最重要的一點就是堅持。MATLAB涉及的領域太多,每個領域里面都缺乏足夠的專家分布在你周圍。那么我們很難有機會接觸到真正的高手,對我們的技術細節一一指點。在遇到實際問題時,就只能靠自己去摸索。常常是再堅持一兩個小時,就能夠解決你的問題。最大的成就感,就在付出了極大的心血和耐心,才取得一個艱難的小勝利。
第五篇:MATLAB總結與上機指南
化工計算中常用的MATLAB命令總結
化學工程中的計算問題一般比較復雜, 其操作的數據對象通常是數組, 具體計算涉及到插值、求積分、參數擬合、解常微分和偏微分微分方程、解線性和非線性方程等。MATLAB是新一代的科學計算語言, 在解決上述問題上, 相對于FORTRAN、C 和BASIC等傳統的計算語言具有明顯的優越性。本文針對應用MATLAB 解決化工中的典型問題進行計算常用方法和命令做以小結。1.最小二乘法擬合 1.1 最小二乘擬合直線
函數
lsline 格式
lsline
%最小二乘擬合直線
h = lsline
%h為直線的句柄 1.2約束線性最小二乘
有約束線性最小二乘的標準形式為
minx1Cx?d222
sub.to
A?x?b
Aeq?x?beq
lb?x?ub
其中:C、A、Aeq為矩陣;d、b、beq、lb、ub、x是向量。在MATLAB5.x中,約束線性最小二乘用函數conls求解。
函數
lsqlin
格式
x = lsqlin(C,d,A,b)
%求在約束條件A?x?b下,方程Cx = d的最小二
乘解x。
x = lsqlin(C,d,A,b,Aeq,beq)
%Aeq、beq滿足等式約束Aeq?x?beq,若沒有不等式約束,則設A=[ ],b=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
%lb、ub滿足lb?x?ub,若沒有等
式約束,則Aeq=[ ],beq=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)
% x0為初始解向量,若x沒有界,則lb=[ ],ub=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)
% options為指定優化參數 [x,resnorm] = lsqlin(…)
% resnorm=norm(C*x-d)^2,即2-范數。[x,resnorm,residual] = lsqlin(…)
%residual=C*x-d,即殘差。
[x,resnorm,residual,exitflag] = lsqlin(…)
%exitflag為終止迭代的條件 [x,resnorm,residual,exitflag,output] = lsqlin(…)
% output表示輸出優化
信息
[x,resnorm,residual,exitflag,output,lambda] = lsqlin(…)
% lambda為解x的Lagrange乘子
1.3 非線性最小二乘
非線性最小二乘(非線性數據擬合)的標準形式為
minxf(x)?f1(x)2?f2(x)2???fm(x)2?L
其中:L為常數
在MATLAB5.x中,用函數leastsq解決這類問題,在6.0版中使用函數lsqnonlin。
?f1(x)???f2(x)? 設F(x)????????fm(x)?則目標函數可表達為minx12F(x)22?1?fi(x)2 2i其中:x為向量,F(x)為函數向量。函數
lsqnonlin 格式
x = lsqnonlin(fun,x0)
%x0為初始解向量;fun為fi(x),i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隱含在算法中,fun的定義與前面相同。
lb?x?ubx = lsqnonlin(fun,x0,lb,ub)
%lb、ub定義x的下界和上界:。
x = lsqnonlin(fun,x0,lb,ub,options)
%options為指定優化參數,若x沒有界,則lb=[ ],ub=[ ]。
[x,resnorm] = lsqnonlin(…)% resnorm=sum(fun(x).^2),即解x處函數值。[x,resnorm,residual] = lsqnonlin(…)
% residual=fun(x),即解x處fun的值。[x,resnorm,residual,exitflag] = lsqnonlin(…)
%exitflag為終止迭代條件。[x,resnorm,residual,exitflag,output] = lsqnonlin(…)%output輸出優化信息。[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(…)
%lambda為
Lagrage乘子。
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqnonlin(…)
%fun
在解x處的Jacobian矩陣。
多項式 2.1 多項式求值
函數名稱:polyval 調用格式:y=polyval(p,x),[y,delta]=polyval(p,x,S)返回多項式p在x點處的取值。X可以是向量也可以是矩陣。[y,delta] = polyval(p,x,S)同時還生成誤差估計。2.2 多項式求根
函數名稱:roots 調用格式:r=roots(c)
返回一個元素為多項式c的根的列向量。行向量中包含按降冪排列的多項式的系數,如果c中包含n+1個元素,則多項式的表達式為:c1sn+…+cns+cn+1。3 插值 3.1 一維插值
函數名稱:interp1 調用格式:yi=interp1(x,Y,xi), yi=interp1(x,Y,xi,method)MATLAB中有兩類一維數據插值方法:多項式插值法和基于FFT的插值法。函數interp1采用多項式插值法,它用多項式擬合所給出的數據,然后在插值點上根據多項式算出相應的值。調用格式中,xi為需要插值的位置所組成的向量,yi 為根據插值算法求得的值所組成的向量。x,Y為已知的數據點向量。參數method用于確定具體的插值方法,包括:
‘linear’表示采用線性插值方法;‘cubic’表示采用三次插值的方法; ‘nearest’表示采用最近點插值法;‘spline’表示用三次樣條插值方法。3.2 二維插值
函數名稱:interp2 調用格式
ZI = interp2(X,Y,Z,XI,YI)
返回矩陣ZI,其元素包含對應于參量XI與YI(可以是向量、或同型矩陣)的元素,即Zi(i,j)←[Xi(i,j),yi(i,j)]。
ZI = interp2(Z,XI,YI)
缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按 ’nearest’:最臨近插值; ’spline’:三次樣條插值; ’cubic’:雙三次插值。非線性數據(曲線)擬合
非線性曲線擬合是已知輸入向量xdata和輸出向量ydata,并且知道輸入與輸出的函數關系為ydata=F(x, xdata),但不知道系數向量x。今進行曲線擬合,求x使得下式成立:
minx1F(x,xdata)?ydata222?1?(F(x,xdatai)?ydatai)2 2i在MATLAB5.x中,使用函數curvefit解決這類問題。函數
lsqcurvefit 格式
x = lsqcurvefit(fun,x0,xdata,ydata)x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)[x,resnorm] = lsqcurvefit(…)[x,resnorm,residual] = lsqcurvefit(…)[x,resnorm,residual,exitflag] = lsqcurvefit(…)[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)參數說明:
x0為初始解向量;xdata,ydata為滿足關系ydata=F(x, xdata)的數據; lb、ub為解向量的下界和上界lb?x?ub,若沒有指定界,則lb=[ ],ub=[ ];
options為指定的優化參數;
fun為擬合函數,其定義方式為:x = lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定義為
function F = myfun(x,xdata)F = …
% 計算x處擬合函數值fun的用法與前面相同; resnorm=sum((fun(x,xdata)-ydata).^2),即在x處殘差的平方和; residual=fun(x,xdata)-ydata,即在x處的殘差; exitflag為終止迭代的條件; output為輸出的優化信息; lambda為解x處的Lagrange乘子;
jacobian為解x處擬合函數fun的jacobian矩陣。
數值積分
5.1 一元函數的數值積分
函數名稱:
quad、quadl、quad8 調用格式 q = quad(fun,a,b)
%近似地從a到b計算函數fun的數值積分,誤差為10。給fun輸入向量x,應返回向量y,即fun是一單值函數。q = quad(fun,a,b,tol)
%用指定的絕對誤差tol代替缺省誤差。tol越大,函數計算的次數越少,速度越快,但結果精度變小。
q = quad(fun,a,b,tol,trace,p1,p2,…)
%將可選參數p1,p2,…等傳遞給函數fun(x,p1,p2,…),再作數值積分。若tol=[]或trace=[],則用缺省值進行計算。
[q,n] = quad(fun,a,b,…)%同時返回函數計算的次數n … = quadl(fun,a,b,…)
%用高精度進行計算,效率可能比quad更好。… = quad8(fun,a,b,…)
%該命令是將廢棄的命令,用quadl代替。
5.2 一元函數的數值積分
函數名稱:
dblquad 功能
矩形區域上的二重積分的數值計算
調用格式
q = dblquad(fun,xmin,xmax,ymin,ymax)
調用函數quad在區域[xmin,xmax, ymin,ymax]上計算二元函數z=f(x,y)的二重積分。輸入向量x,標量y,則f(x,y)必須返回一用于積分的向量。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
用指定的精度tol代替缺省精度10-6,再進行計算。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)
用指定的算法method代替缺省算法quad。method的取值有@quadl或用戶指定的、與命令quad與quadl有相同調用次序的函數句柄。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,…)
將可選參數p1,p2,..等傳遞給函數fun(x,y,p1,p2,…)。若tol=[],method=[],則使用缺省精度和算法quad。非線性方程組的解
非線性方程組的標準形式為:F(x)= 0 其中:x為向量,F(x)為函數向量。函數
fsolve 格式
x = fsolve(fun,x0)
用fun定義向量函數,其定義方式為:先定義方程函數function F = myfun(x)。
F =[表達式1;表達式2;…表達式m] 保存為myfun.m,并用下面方式調用:x =
-6fsolve(@myfun,x0),x0為初始估計值。
x = fsolve(fun,x0,options)[x,fval] = fsolve(…)
fval=F(x),即函數值向量 [x,fval,exitflag] = fsolve(…)[x,fval,exitflag,output] = fsolve(…)[x,fval,exitflag,output,jacobian] = fsolve(…)
jacobian為解x處的Jacobian陣。
其余參數與前面參數相似。7 常微分方程數值解
函數名稱:ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb 功能
常微分方程(ODE)組初值問題的數值解 參數說明:
solver為命令ode45、ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一。
Odefun 為顯式常微分方程y’=f(t,y),或為包含一混合矩陣的方程M(t,y)*y’=f(t,y)。命令ode23只能求解常數混合矩陣的問題;命令ode23t與ode15s可以求解奇異矩陣的問題。
Tspan 積分區間(即求解區間)的向量tspan=[t0,tf]。要獲得問題在其他指定時間點t0,t1,t2,…上的解,則令tspan=[t0,t1,t2,…,tf](要求是單調的)。
Y0 包含初始條件的向量。
Options 用命令odeset設置的可選積分參數。P1,p2,… 傳遞給函數odefun的可選參數。調用格式
[T,Y] = solver(odefun,tspan,y0)
在區間tspan=[t0,tf]上,從t0到tf,用初始條件y0求解顯式微分方程y’=f(t,y)。對于標量t與列向量y,函數f=odefun(t,y)必須返回一f(t,y)的列向量f。解矩陣Y中的每一行對應于返回的時間列向量T中的一個時間點。要獲得問題在其他指定時間點t0,t1,t2,…上的解,則令tspan=[t0,t1,t2,…,tf](要求是單調的)。
[T,Y] = solver(odefun,tspan,y0,options)%用參數options(用命令odeset生成)設置的屬性(代替了缺省的積分參數),再進行操作。常用的屬性包括相對誤差值RelTol(缺省值為1e-3)與絕對誤差向量AbsTol(缺省值為每一元素為1e-6)。
[T,Y] =solver(odefun,tspan,y0,options,p1,p2…)
將參數p1,p2,p3,..等傳遞給函數odefun,再進行計算。若沒有參數設置,則令options=[]。