第一篇:matlab 與ccsv5連接總結(jié)要點(diǎn)
需要軟件:前期是要安裝VS2010或者VS2008或者VC6、CCS5.5或者CCS6、Matlab2012以上版本。并配置好Maltab的編譯器路徑(mex-setup)
前提假設(shè)CCS5安裝路徑如下:
CCS Installation: D:TIccsv5
CCSV5安裝路徑
Code geeneration Tools: D:TIccsv5toolscompilerc2000,編譯器的路徑 如果其它路徑,則需要在下邊的應(yīng)用中相應(yīng)的路徑中更改路徑。
【1】 Matlab VS CCSV5 【1】 在matlab 中鍵入xmakefilesetup ,并設(shè)置如下圖
圖1 gmake設(shè)置
【2】 首先將display operational configuration only的勾選去掉,然后在configuration的下拉中選擇ticcs_c2000_ccsv5,如果沒有,則點(diǎn)擊右上角的New,然后分別在Make Utiliy、Complier、Linker、Archiver、Prebuild、Postbuild、Execute填入一下內(nèi)容
Make Utiliy:
Make Utility :
D:PROGRA~1MATLABR2013abinwin32gmake(這個(gè)路徑是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
執(zhí)行編譯
Execute Tool:
D:ticcsv5ccs_basescriptingbindss.bat Arguments :“D:PROGRA~1MATLABR2013atoolboxidelinkextensionsticcsccsdemosrunProgram.js” “D:tiXDS100v2.ccxml” “[|||MW_XMK_GENERATED_TARGET_REF[E]|||]” 接著點(diǎn)擊保存即可。,這時(shí)將會(huì)在C:Documents and SettingsAdministrator我的文檔MATLAB 路徑下產(chǎn)生這樣一個(gè)文件名字
ticcs_c2000_ccsv5_clone.m
此文件的內(nèi)容如下:(如果不想按上邊一步一步配置xmakefiletool,可以將ticcs_c2000_ccsv5_clone.m這個(gè)文件拷貝到,(C:Documents and SettingsAdministrator我的文檔MATLAB)路徑下,然后根據(jù)自己一些軟件的安裝位置,修改其中的路徑,下面我用綠色標(biāo)出有可能需要更改的地方。
% 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】 然后打開模型,并進(jìn)行設(shè)置,如果是2013A已經(jīng)去掉 target preferences模塊,在configuration中的 code generation 中選擇idelink_ert_tlc,這時(shí)下邊會(huì)出現(xiàn)code
圖2 TLC文件選擇
Target,點(diǎn)擊它,在target hardware resources中“IDE/Tool Chain”,選擇“Texas Instruments Code Composer Studio v5(makefile generation only)”.注意:首先備份配置,因?yàn)檫@會(huì)覆蓋已有的配置。然后設(shè)置board為C2000,processor為 F28335
圖3 configuration parameters/Code generation設(shè)置
【4】 檢查是否配置成功,在workspace鍵入checkEnvSetup('ccsv5','F28335 eZdsp', 'setup'),這時(shí)如果沒有配置成功,系統(tǒng)會(huì)自動(dòng)彈出如下圖對(duì)話框,提示選擇安裝路徑等,此過程和xmakefilesetup的設(shè)置相似,只不過此處是設(shè)置系統(tǒng)環(huán)境變量,這樣才能讓軟件通過系統(tǒng)變量找到相關(guān)軟件的路徑,如果配置成功顯示如下圖,checkEnvSetup('ccsv5','f28335', 'check),檢查配置
checkEnvSetup('ccsv5','f28335', 'setup'),設(shè)置環(huán)境變量
圖4 環(huán)境變量檢查以及設(shè)置
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】 此時(shí)在鍵入或者鍵入ccsboardinfo,進(jìn)行配置查看
過程調(diào)試總結(jié):
(1)此配置確實(shí)比較麻煩,不同的版本情況不一樣,2010a更復(fù)雜一些,不過用ccs3.3沒有問題。一定要設(shè)置好ticcs_c2000_ccsv5_clone文件的路徑否則不能打開(而且一定要放在gmakefile指定的User template路徑下面,當(dāng)然可以更改這個(gè)路徑,只要放在與路徑相符的下面即可)。
(2)Matlab2013A已經(jīng)包含有xmakefile文件。D:Program FilesMATLABR2013atoolboxidelinkextensionsticcsregistryxmakefilecfgc2000_cce_v5.m,但是這里需要根據(jù)自己軟件安裝位置進(jìn)行配置,可以通過修改cceV5.m文件修改,也可以通過xmakefilesetup工具修改,建議使用后者。
(3)問題3:按照網(wǎng)上方法配置后,可以編譯out文件,但是無法實(shí)現(xiàn)自動(dòng)下載,原因有可能是路徑問題,比如“D:PROGRA~1MATLABR2013atoolboxidelinkextensionsticcsccsdemosrunProgram.js” “D:tiXDS100v2.ccxml” “[|||MW_XMK_GENERATED_TARGET_REF[E]|||]”,這里本來是指定運(yùn)行程序和調(diào)用仿真器配置文件下載的,對(duì)于D:Program FilesMATLABR2013a,由于路徑存在空格,此處是無法識(shí)別,需要改成簡(jiǎn)寫格式D:PROGRA~1,或者重新裝matlab這個(gè)不現(xiàn)實(shí),對(duì)于仿真器配置文件ccxml比較小,可以將其放在其它無空格的路徑下,然后將xmakefile 工具execute 的arguments路徑進(jìn)行修改。對(duì)于有空格的路徑可以改寫為前(6個(gè)字母)+(~1)
圖4 編譯成功,但是無法自動(dòng)下載。
圖5 自動(dòng)連接下載的路徑配置,arguments的路徑要求無空格。
到此實(shí)現(xiàn)了將matlab程序自動(dòng)編譯并下載到處理器中,無需打開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.需要新建一個(gè)CCS工程,將點(diǎn)c和點(diǎn)asm放入SRC中,將.h放入INCLUDE,同時(shí),需要將必要的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')運(yùn)行ccsIDE中的程序
halt(mypjt)
停止運(yùn)行ccsIDE中的程序 cd(mypjt,projpath)
返回到工程文件 close(mypjt,'LED.pjt')
關(guān)閉工程文件
insert(mypjt,'LED.c',20,'break')
在工程文件第20行插入斷點(diǎn)
mypjt.new('mypjt','project')
新建一個(gè)名字為mypjt的ccs工程文件
TI ControlSuite
【3】 DSP驅(qū)動(dòng)集成
有些時(shí)候,評(píng)估板的驅(qū)動(dòng),并不能滿足自己開發(fā)的板子,這時(shí)需要使用legacy code tool或者custom code來集成自己開發(fā)的驅(qū)動(dòng)。D:matlabR2009btoolboxtargetextensionsprocessortic6000blkslctspecsc6455dsk_dip_led_LCT.m
【4】 DSP PIL Matlab Matlab 2013或者2014可以在線獲取target support package
第二篇:matlab與sql總結(jié)
總結(jié)
一個(gè)星期前老師給了一個(gè)任務(wù),要求用GUI做成一個(gè)simulink仿真界面,通過matlab與SQL的連接,然后把仿真結(jié)果存到sql里建的數(shù)據(jù)庫(kù)里。從一開始什么都不懂,到現(xiàn)在可以用GUI做一個(gè)簡(jiǎn)單的界面,以及matlab與sql的連接,這一個(gè)星期感慨頗多,尤其是查閱相關(guān)資料的痛苦,及找到可以借鑒資料的喜悅,到最后逐漸有了一個(gè)清晰的思想。過程如下:
一首先了解GUI 1.1 GUI簡(jiǎn)介[1,2]
圖形用戶界面(graphical user interface,GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說明等對(duì)象(Ob-ject)構(gòu)成的一個(gè)用戶界面。用戶通過一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等假如科技工作者僅僅執(zhí)行數(shù)據(jù)分析、解方程等工作,一般不會(huì)考慮GUI的制作。但是如果想向客戶提供應(yīng)用程序,想進(jìn)行某種技術(shù)、方法的演示,想制作一個(gè)供反復(fù)使用且操作簡(jiǎn)單的專用工具,那么圖形用戶界面是最好的選擇之一。開發(fā)實(shí)際的應(yīng)用程序時(shí)應(yīng)該盡量保持程序的界面友好,因?yàn)槌绦蚪缑媸菓?yīng)用程序和用戶進(jìn)行交互的環(huán)境。在當(dāng)前情況下,使用圖形用戶界面是最常用的方法。提供圖形用戶界面可使用戶更方便地使用應(yīng)用程序,不需要了解應(yīng)用程序怎樣執(zhí)行各種命令,只需要了解圖形界面組件的使用方法;同時(shí),不需要了解各種命令是如何執(zhí)行的,只要通過用戶界面進(jìn)行交互操作就可以正確執(zhí)行程序。
在Matlab7.0中,圖形用戶界面是一種包含多種圖形對(duì)象的界面,典型的圖形界面包括圖形顯示區(qū)域、功能按鈕空間以及用戶自定義的功能菜單等。為了讓界面實(shí)現(xiàn)各種功能,需要對(duì)各個(gè)圖形對(duì)象進(jìn)行布局和時(shí)間編程。這樣,當(dāng)用戶激活對(duì)應(yīng)的GUI對(duì)象時(shí),就能執(zhí)行相應(yīng)的時(shí)間行為。最后,必須保存和發(fā)布自己創(chuàng)建的GUI,使得用戶可以應(yīng)用GUI對(duì)象。在Matlab中,所有對(duì)象都可以使用M文件進(jìn)行編寫。GUI也是一種Matlab對(duì)象,因此,可以使用M文件來創(chuàng)建GUI。使用M文件創(chuàng)建GUI的方法也是最基礎(chǔ)的,使用其他方法創(chuàng)建GUI圖形界面時(shí),實(shí)現(xiàn)圖形控件的各種功能時(shí),也需要編寫相應(yīng)的程序代碼。
除了使用M文件來創(chuàng)建GUI對(duì)象之外,Matlab還為用戶開發(fā)圖形界面提供了一個(gè)方便高效的集成開發(fā)環(huán)境:Matlab圖形用戶界面開發(fā)環(huán)境(matlab graphical user interface development envi-ronment)簡(jiǎn)稱GUIDE,其主要是一個(gè)界面設(shè)計(jì)工具集。Matlab7.0將所有GUI所支持的用戶控件都集成起來,同時(shí)提供界面外觀、屬性和行為響應(yīng)方法的設(shè)置方法。除了可以使用GUIDE創(chuàng)建GUI之外,還可以將設(shè)計(jì)好的GUI界面保存為一個(gè)FIG資源文件,自動(dòng)生成對(duì)應(yīng)的M文件。該M文件包含了GUI初始化代碼和組建界面布局的控制代碼。使用GUIDE創(chuàng)建GUI對(duì)象執(zhí)行效率高,可以交互式地進(jìn)行組件布局,還能生成保存和發(fā)布GUI的對(duì)應(yīng)文件。
FIG文件:該文件包含GUI圖形窗口及其子對(duì)象的完全描述,包含所有相關(guān)對(duì)象的屬性信息,可以調(diào)用hgsave命令或者使用M文件編輯器的File>Save命令生成該文件。FIG文件是一個(gè)二進(jìn)制文件,包含系列化的圖形窗口對(duì)象。所有對(duì)象的屬性都是用戶創(chuàng)建圖形窗口時(shí)保存的屬性。該文件最主要的功能是對(duì)象句柄的保存。
M文件:該文件包含GUI設(shè)計(jì)、控制函數(shù)及控件的回調(diào)函數(shù),主要用來控制GUI展開時(shí)的各種特征。該文件基本上可以分為GUI初始化和回調(diào)函數(shù)2個(gè)部分,控件的回調(diào)函數(shù)根據(jù)用戶與GUI的具體交互行為分別調(diào)用。應(yīng)用程序M文件使用open-fig命令來顯示GUI對(duì)象,但是該文件不包含用戶界面設(shè)計(jì)的代碼,對(duì)應(yīng)代碼由FIG文件保存。1.2 設(shè)計(jì)GUI步驟
簡(jiǎn)單說來,一個(gè)好的界面應(yīng)遵循以下3個(gè)原則:簡(jiǎn)單性(Simplicity)、一致性(Consistency)及習(xí)常性(Familiarity)。界面制作包括界面設(shè)計(jì)和程序?qū)崿F(xiàn)。具體制作步驟如下[3,4]: 1)分析界面所要求實(shí)現(xiàn)的主要功能,明確設(shè)計(jì)任務(wù);2)在稿紙上繪出界面草圖,并站在使用者的角度來審查草圖;3)按構(gòu)思的草圖,上機(jī)制作(靜態(tài))界面,并對(duì)其進(jìn)行檢查;4)編寫界面動(dòng)態(tài)功能的程序,對(duì)功能進(jìn)行逐項(xiàng)檢查。
以上過程只是一般原則,在設(shè)計(jì)中,步驟之間也可能要交叉執(zhí)行或復(fù)合執(zhí)行;設(shè)計(jì)和實(shí)現(xiàn)過程往往不是一步到位的,可能需要反復(fù)修改,才能獲得滿意的界面。建議先進(jìn)行界面布局編碼,后進(jìn)行動(dòng)態(tài)交互功能的編碼。
二數(shù)據(jù)庫(kù)與matlab的連接
2.1 ODBC簡(jiǎn)介[5]
ODBC(開放式數(shù)據(jù)庫(kù)的連接)是一種應(yīng)用程序的接口(API)。這種接口提供了獨(dú)立于任何的數(shù)據(jù)庫(kù)管理系統(tǒng)編寫應(yīng)用程序的能力。ODBC通過ODBC驅(qū)動(dòng)程序提供了對(duì)不同的數(shù)據(jù)庫(kù)供應(yīng)商的一組應(yīng)用程序接口來給特殊的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。用戶的應(yīng)用程序使用這組API來調(diào)度ODBC驅(qū)動(dòng)程序,然后驅(qū)動(dòng)程序通過SQL語句同DBMS發(fā)生聯(lián)系。DBC提供了數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)接口,從而使應(yīng)用人員在編程時(shí)不必關(guān)心底層的DBMS,大大提高了工作效率。2.2 32位matlab與32 位sql位數(shù)據(jù)庫(kù)之間的連接 2.2.1數(shù)據(jù)庫(kù)的建立
在SQL Server2008中建立數(shù)據(jù)庫(kù)test,在其中建立表stock。2.2.2 SQL數(shù)據(jù)源的配置
建立ODBC數(shù)據(jù)源:控制面板->管理工具->ODBC數(shù)據(jù)源->用戶DNS。點(diǎn)擊“添加”,數(shù)據(jù)源名稱可任意命名。服務(wù)器選擇自己指定的。2.2.3.MATLAB連接數(shù)據(jù)庫(kù)M文件的編寫 1 連接數(shù)據(jù)庫(kù) 代碼如下
>> conn=database('test','sa','123')%test是剛剛建立的數(shù)據(jù)庫(kù)名稱 %sa是數(shù)據(jù)庫(kù)登陸名%‘123’是數(shù)據(jù)庫(kù)登陸密碼 2 檢驗(yàn)數(shù)據(jù)庫(kù)連接狀態(tài)
>> Ping(conn);%用于查看現(xiàn)在數(shù)據(jù)庫(kù)連接狀態(tài) 3 數(shù)據(jù)寫入
>>expdata=[2001 7 12 000001 0.123432];>>fastinsert(conn,{'year','month','day','id','stock_return'},expdata);備注:
(1)Conn一個(gè)變量,是用于保存數(shù)據(jù)庫(kù)連接字符竄的,conn=database('test','sa','123');只要數(shù)據(jù)庫(kù)已經(jīng)連接上,后面就可以直接引用。
(2)'year','month','day','id','stock_return'是數(shù)據(jù)庫(kù)表格中的字段名(3)expdata=[2001 7 12 000001 0.123432]是我們要寫入數(shù)據(jù)庫(kù)的信息,分別對(duì)應(yīng)于數(shù)據(jù)表中的各個(gè)字段。這里我們寫入數(shù)據(jù)庫(kù)的是number型的,因此矩陣式數(shù)字型。即:expdata=[2001 7 12 000001 0.123432]。(4)寫入數(shù)據(jù)前提是已經(jīng)成功連接數(shù)據(jù)庫(kù)。4 數(shù)據(jù)的查詢 代碼:
>>curs=(conn,'select * from test.dbo.stock')%建立數(shù)據(jù)庫(kù)的連接 >>curs=exec(conn,'select * from test.dbo.stock where id=1')%從test數(shù)據(jù)庫(kù),stock表格里面選擇 股票代碼為1的股票的所有信息 >>curs=fetch(curs)%取回?cái)?shù)據(jù)庫(kù)游標(biāo)里面的數(shù)據(jù); >>curs.data%讀取游標(biāo)里面的數(shù)據(jù) 5 顯示查詢后的信息: >>curs.data 6關(guān)閉鏈接對(duì)象和游標(biāo)——close 當(dāng)不再使用數(shù)據(jù)庫(kù)的鏈接對(duì)象時(shí)要及時(shí)關(guān)閉,這樣才能及時(shí)的釋放出內(nèi)存,而且每次鏈接后所需要的內(nèi)存量是非常大的,要是不及時(shí)關(guān)閉的話對(duì)后續(xù)計(jì)算的影響將非常非常的大。close(curs)close(conna)
2.3 64位matlab與64位sql數(shù)據(jù)庫(kù)之間的連接(以下為網(wǎng)絡(luò)整理未證實(shí))
64位Matlab無法通過ODBC接口訪問SQL Server,我們可以跳出ODBC,而直接使用JDBC來訪問數(shù)據(jù)庫(kù)
第一步,從Microsoft.COM 下載Microsoft SQL Server JDBC Driver 3.0,下載地址可以將上述關(guān)鍵字扔進(jìn)Google中搜索就得到了。解壓縮可以得到很多文件,我們需要的是其中的sqljdbc4.jar和sqljdbc.jar這兩個(gè)文件。其中后者是前者的子集,只要不出問題,直接使用前者就可以了。
第二步,在Matlab中加入jar。具體做法是找到“classpath.txt”文件,例如我的這個(gè)文件位置是 “D:Matlab2010Btoolboxlocalclasspath.txt”,在文件的最后加入sqljdbc4.jar的完整路徑,例如我的是:“D:/sqljdbc30/enu/sqljdbc4.jar”,注意斜杠怎么寫。
第三步,啟動(dòng)Matlab,啟動(dòng)過程中如果沒有出錯(cuò),那么這個(gè)JDBC Connector就可以用了。
上面三步就把JDBC Connector建好了。接下來我們就開始連接數(shù)據(jù)庫(kù)。第一步,建立一個(gè)到數(shù)據(jù)庫(kù)的連接。假設(shè)SQL Server地址是 192.30.1.117,端口是 1433,數(shù)據(jù)庫(kù)名稱是RTQ,用戶名user,密碼 pwd,那么用下面的語句建立一個(gè)到該數(shù)據(jù)庫(kù)的連接。
conn=database('RTQ','user','pwd','com.microsoft.sqlserver.jdbc.SQLServerDriver',...'jdbc:sqlserver://192.30.1.117:1433;databaseName=RTQ');
參考文獻(xiàn)
[1]MATLAB Application Program Interface Guide[C],TheMathworks Inc,1999 [2]王躍強(qiáng)、王紀(jì)龍、王云才,VB程序中實(shí)現(xiàn)調(diào)用MATLAB的方法[J],計(jì)算機(jī)應(yīng)用,2001,vol.21,No.2 [3]劉炳文編著,精通Visual Basic 6.0中文版[M]北京:電子工業(yè)出版社,1999.7 [4]劉衛(wèi)國(guó),科學(xué)計(jì)算與MATLAB語言[M],中國(guó)鐵道出版社,2000.4 [5]侯春生,陳汝義,袁愛進(jìn),喬 毅,唐明新.MATLAB/VB/SQL Server編程實(shí)現(xiàn)數(shù)據(jù)管理[J].微型電腦應(yīng)用,Vol.18,No.7,2002
第三篇:matlab總結(jié)
班級(jí): 學(xué)號(hào): 姓名:
Matlab學(xué)習(xí)綜述
MATLAB是一種科學(xué)計(jì)算軟件,專門以矩陣的形式處理數(shù)據(jù)。MATLAB將高性能的數(shù)值計(jì)算和強(qiáng)大的數(shù)據(jù)可視化功能集成在一起,并提供了大量的內(nèi)置函數(shù),從而被廣泛地應(yīng)用于科學(xué)計(jì)算、控制系統(tǒng)、信息處理等領(lǐng)域的分析、仿真和設(shè)計(jì)工作,而且利用MATLAB產(chǎn)品的開放式結(jié)構(gòu),可以非常容易地對(duì)MATLAB的功能進(jìn)行擴(kuò)充。
MATLAB產(chǎn)品由若干個(gè)模塊組成,不同的模塊完成不同的功能,其中主要的核心模塊有MATLAB、MATLAB Toolboxex、MATLAB Compiler Simulink、Simulink Blocksets、Real-time Workshop(RTW)Stateflow。這些產(chǎn)品大體上可以分為以MATLAB為基礎(chǔ)的產(chǎn)品和以Simulink為基礎(chǔ)的產(chǎn)品兩大分支。其中,MATLAB是MATLAB產(chǎn)品家族的基礎(chǔ),任何其他MATLAB產(chǎn)品產(chǎn)品都以這個(gè)模塊為基礎(chǔ)。MATLAB的桌面應(yīng)用程序開發(fā)工具是以MATLAB Compiler為核心的一組編譯工具。Simulink是基于MATLAB的框圖設(shè)計(jì)環(huán)境,可以用來對(duì)各種動(dòng)態(tài)系統(tǒng)進(jìn)行建模,分析和仿真,它的建模范圍廣泛,可以針對(duì)任何能夠用數(shù)字來描述的系統(tǒng)進(jìn)行建模。
一種完整的計(jì)算機(jī)應(yīng)用語言應(yīng)該提供對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)的操作。在M語言中,最常用的數(shù)據(jù)類型表現(xiàn)手段和形式就是變量和常量,由于MATLAB軟件自身的特點(diǎn),它是一種以數(shù)值計(jì)算為基礎(chǔ)的軟件,因此M語言的基本處理單位是數(shù)值矩陣或者數(shù)值向量,在M語言中統(tǒng)一將矩陣或者向量稱之為數(shù)組,因此掌握一些基本的矩陣、向量和數(shù)組操作的基本知識(shí)就成為了掌握MATLAB軟件的基礎(chǔ)。變量和常量是編程語言中類型的表現(xiàn)手段和形式,掌握變量和常量的概念也是掌握M語言編程的基礎(chǔ)。所謂變量,就是指在程序運(yùn)行中需要改變數(shù)值的量,每一個(gè)變量都具有一個(gè)名字,變量將在內(nèi)存中占據(jù)一定的空間,以在程序運(yùn)行的過程中保存其數(shù)值,對(duì)變量的命名有相應(yīng)的要求:變量必須以字母開頭,后面可以是字母、數(shù)字或者下劃線之間的組合。所謂常量就是在程序運(yùn)行的過程中不需要改變數(shù)值的量。
MATLAB專門以矩陣作為基本的運(yùn)算單位,首先要掌握向量、矩陣、索引和多維數(shù)組的概念,以及在MATLAB環(huán)境下創(chuàng)建向量、矩陣和多維數(shù)組的方法,以及操作矩陣和多維數(shù)值的函數(shù)的使用方法。
目前的MATLAB版本中不僅有多達(dá)十幾種的基本數(shù)據(jù)類型。在不同的專業(yè)工具箱中還有特殊的數(shù)據(jù)類型,并且MATLAB還支持面向?qū)ο蟮木幊碳夹g(shù),支持用戶自定義的數(shù)據(jù)類型。獲取MATLAB的數(shù)據(jù)類型可以在MATLAB命令行窗體中鍵入help datatypes。MATLAB的數(shù)據(jù)類型包括基本的數(shù)值類型,邏輯類型數(shù)據(jù)、元胞數(shù)值、結(jié)構(gòu)和字符串等,需要指出一點(diǎn),MATLAB的基本數(shù)據(jù)是雙精度數(shù)據(jù)類型和字符類型。MATLAB提供了完整的編寫應(yīng)用程序的功能,這種能力被稱為M語言的高級(jí)語言來實(shí)現(xiàn)。這種語言是一種解釋性語言,利用該語言編寫的代碼僅能被MATLAB接受,被MATLAB解釋執(zhí)行。其實(shí),一個(gè)M語言文件就是由若干MATLAB的命令組合在一起構(gòu)成的,和C語言類似。M語言文件都是標(biāo)準(zhǔn)的純文本格式的文件,其文件的擴(kuò)展名為.m。MATLAB的函數(shù)主要有兩類,一類被稱為內(nèi)建函數(shù),這類函數(shù)是由MATLAB的內(nèi)核提供的,能夠完成基本的運(yùn)算,例如三角函數(shù)、矩陣運(yùn)算函數(shù)等。另外一類函數(shù)就是利用高級(jí)語言開發(fā)的函數(shù)文件,這里的函數(shù)文件包括用C/FORTRAN語言開發(fā)的MEX函數(shù)文件,也包括了M函數(shù)文件。
M語言文件可以分為兩類,其中一類是腳本文件,另一類是函數(shù)文件,腳本文件是最簡(jiǎn)單的一種M語言文件。所謂腳本文件就是由一系列的M語言文件指令和命令組成的純文本格式的M文件,執(zhí)行腳本文件時(shí),文件中的指令或者命令按照出現(xiàn)在腳本文件中的順序依次執(zhí)行。腳本文件沒有輸入?yún)?shù),也沒有輸出參數(shù),腳本文件處理的數(shù)據(jù)或者變量必須在MATLAB的公共工作空間中,腳本文件主要是由注視行和代碼行組成。
函數(shù)文件是M文件最重要的組成部分,M語言函數(shù)文件能夠接受用戶的輸入?yún)?shù),并進(jìn)行計(jì)算,然后將計(jì)算結(jié)果作為函數(shù)的返回值返回給調(diào)用者,M函數(shù)文件和腳本文件不同,函數(shù)文件不僅有自己特殊的文件格式,而且不同的函數(shù)還分別具有自己的工作空間,函數(shù)文件的輸/輸出參數(shù)不同,這些輸入/輸出參數(shù)在定義的時(shí)候不需要指出變量的類型,因?yàn)镸ATLAB默認(rèn)這些參數(shù)都使用雙精度類型,這樣可以簡(jiǎn)化程序的編寫。M語言的函數(shù)文件不僅可以有一個(gè)輸入?yún)?shù)和一個(gè)返回值,還可以為M語言函數(shù)文件定義多個(gè)輸入?yún)?shù)和多個(gè)輸出參數(shù),同一個(gè)M函數(shù)文件中可以包含多個(gè)函數(shù)。如果在同一個(gè)M函數(shù)文件中包含了多個(gè)函數(shù),那么將出現(xiàn)在文件中的第一個(gè)M函數(shù)稱為主函數(shù),其余的函數(shù)稱為子函數(shù)。
經(jīng)過這么一段時(shí)間的學(xué)習(xí),對(duì)MATLAB有了初步的認(rèn)識(shí)。但是關(guān)于它還有很多知識(shí)我們所不知道,還有待進(jìn)一步的學(xué)習(xí)。以上內(nèi)容是我對(duì)這學(xué)期所學(xué)課程的總結(jié),可能有些地方總結(jié)的不夠到位,因?yàn)橛行┑胤綄W(xué)習(xí)的不夠深入,所以,以后要更加努力,在MATLAB的學(xué)習(xí)上多花一些時(shí)間,為以后的學(xué)習(xí)和工作打下基礎(chǔ)。
第四篇:MATLAB總結(jié)
目錄
一、Matlab相關(guān)說明.....................................................................2
二、Matlab操作注意事項(xiàng)..............................................................2
三、Matlab常用代碼(圖像處理相關(guān))......................................5
四、Matlab常用快捷鍵.................................................................7
五、Matlab學(xué)習(xí)心得.....................................................................8
一、Matlab相關(guān)說明
Matlab是“Matrix Laboratory”的縮寫,意為“矩陣實(shí)驗(yàn)室”。MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡(jiǎn)捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對(duì)C,F(xiàn)ORTRAN,C++,JAVA的支持。
我所使用的Matlab版本是2012a,下文所涉及到圖片、專業(yè)術(shù)語等都是以此版本為基礎(chǔ)。
二、Matlab操作注意事項(xiàng)
1.打開并運(yùn)行一個(gè)現(xiàn)存的m文件且這個(gè)m文件運(yùn)行時(shí)需用到同一級(jí)文件夾中的其他文件,會(huì)出現(xiàn)如下提示框:
選擇變更文件夾,將當(dāng)前文件夾變更為這個(gè)m文件所在的文件夾。
2.不小心點(diǎn)錯(cuò)或關(guān)閉了各種小窗口,將Matlab恢復(fù)成默認(rèn)布局
點(diǎn)擊桌面—桌面布局—默認(rèn)
3.查看某個(gè)函數(shù)的用法
在命令窗口輸入該變量的名稱,回車即可。
4.查找某個(gè)函數(shù)的用法
在命令窗口輸入help+函數(shù)的名稱,回車后會(huì)自動(dòng)顯示該函數(shù)的相關(guān)信息。
5.運(yùn)行文件后報(bào)錯(cuò) 如下圖所示,命令窗口中報(bào)錯(cuò)的第一段是錯(cuò)誤的原因,后面幾段會(huì)顯示發(fā)生錯(cuò)誤的文件夾以及在該文件夾中的位置。
點(diǎn)擊文件的名稱,會(huì)跳轉(zhuǎn)出一個(gè)提示框,上面顯示了該文件的具體實(shí)現(xiàn)功能,如下圖所示。點(diǎn)擊文件名后面的行標(biāo)號(hào),可以直接跳轉(zhuǎn)到發(fā)生錯(cuò)誤的那一行。
6.如何編輯界面?
修改如圖所示的fig文件
1.新建一個(gè)GUI文件
2.選擇打開現(xiàn)存的GUI文件,點(diǎn)擊Open,就可以對(duì)當(dāng)前界面進(jìn)行編輯了。
7.如何將MAtlab中默認(rèn)的current folder修改為自己想要的路徑,每次啟動(dòng)后都默認(rèn)是自己 設(shè)定的這個(gè)路徑?
>>右鍵matlab 快捷方式,屬性-快捷方式-起始位置 填入你自己的工作目錄。8.把圖復(fù)制到WORD文件的方法:電機(jī)EDIT—>Copy Figure—>Ctrl+V 9.輸入時(shí),標(biāo)點(diǎn)必須是英文狀態(tài)下的
10.大多數(shù)情況下,matlab對(duì)空格不予處理
11.小括號(hào)代表運(yùn)算級(jí)別,中括號(hào)用于生成矩陣,大括號(hào)用于構(gòu)成單元數(shù)組
12.分號(hào);的作用:不顯示運(yùn)算結(jié)果,但對(duì)圖形窗口不起作用。分號(hào)也用于區(qū)分行,13.逗號(hào),的作用:函數(shù)參數(shù)分隔符,也用于區(qū)分行,顯示運(yùn)算結(jié)果,當(dāng)然不加標(biāo)點(diǎn)也顯示運(yùn)算結(jié)果
14.冒號(hào):多用于數(shù)組
15.續(xù)行號(hào)...不能放在等號(hào)后面使用,不能放在變量名中間使用,起作用時(shí)默認(rèn)顯藍(lán)色 16.雙引號(hào)'string'是字符串的標(biāo)識(shí)符 17.感嘆號(hào)!用于調(diào)用操作系統(tǒng)運(yùn)算
18.百分號(hào)%是注釋號(hào),百分號(hào)后面直到行末的語句matlab跳過執(zhí)行.另外還有一個(gè)塊注釋,即對(duì)多行一次注釋,會(huì)使用到,格式為(注意%{ 和%}都要單獨(dú)成行)%{ %} 19.矩陣中用圓括號(hào)表示下標(biāo),單元數(shù)組用大括號(hào)表示下標(biāo)
20.對(duì)變量名的基本要求:區(qū)分大小寫,不超過63個(gè)字符,以字母開頭,只能是字母,數(shù)字和下劃線
三、Matlab常用代碼(圖像處理相關(guān))
1.創(chuàng)建一個(gè)文件夾 mkdir('D:myData');2.將圖片保存到指定的文件夾
image_source=strcat('result',num2str(loop),'.jpg');imwrite(F.cdata,image_source);3.將電影轉(zhuǎn)成圖片序列
fnum=size(mov,2);%讀取電影的禎數(shù) for i=1:fnum strtemp=strcat('C:UsersAdministratorDesktopparticalfiltermyself粒子濾波',int2str(i),'.jpg');%將每禎轉(zhuǎn)成jpg的圖片 imwrite(mov(i).cdata,strtemp,'jpg');end
4、模擬噪聲生成函數(shù)和預(yù)定義濾波器
① imnoise:用于對(duì)圖像生成模擬噪聲,如:
i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模擬高斯噪聲 ② fspecial:用于產(chǎn)生預(yù)定義濾波器,如: h=fspecial('sobel');%sobel水平邊緣增強(qiáng)濾波器 h=fspecial('gaussian');%高斯低通濾波器 h=fspecial('laplacian');%拉普拉斯濾波器
h=fspecial('log');%高斯拉普拉斯(LoG)濾波器 h=fspecial('average');%均值濾波器
5、圖像文件I/O函數(shù)命令
imfinfo 返回圖形圖像文件信息
語法:info=imfinfo(filename,fmt)info=imfinfo(filename)imread 從圖像文件中讀?。ㄝd入)圖像
語法: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.二進(jìn)制圖像操作函數(shù)
applylut 在二進(jìn)制圖像中利用lookup表進(jìn)行行邊沿操作 語法:A=applylut(BW,LUT)bwarea 計(jì)算二進(jìn)制圖像對(duì)象的面積 語法:total=bwarea(BW)bweuler 計(jì)算二進(jìn)制圖像的歐拉數(shù) 語法:eul=bweuler(BW)
8.顏色空間轉(zhuǎn)換函數(shù)
hsv2rgb 轉(zhuǎn)換HSV值為RGB顏色空間:M=hsv2rgb(H)ntsc2rgb 轉(zhuǎn)換NTSC值為RGB顏色空間:rgbmap=ntsc2rgb(yiqmap)RGB=ntsc2rgb(YIQ)rgb2hsv 轉(zhuǎn)換RGB值為HSV顏色空間:cmap=rgb2hsv(M)rgb2ntsc 轉(zhuǎn)換RGB值為NTSC顏色空間:yiqmap=rgb2ntsc(rgbmap)YIQ=rgb2ntsc(RGB)rgb2ycbcr 轉(zhuǎn)換RGB值為YCbCr顏色空間:ycbcrmap=rgb2ycbcr(rgbmap)YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 轉(zhuǎn)化YCbCr值為RGB顏色空間:rgbmap=ycbcr2rgb(ycbcrmap)RGB=ycbcr2rgb(YCBCR)
9.類型轉(zhuǎn)換函數(shù)
im2bw 轉(zhuǎn)換圖像為二進(jìn)制圖像
語法:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)im2double 轉(zhuǎn)換圖像矩陣為雙精度型
語法:I2=im2double(I1)RGB2=im2double(RGB1)I=im2double(BW)X2=im2double(X1,'indexed')double 轉(zhuǎn)換數(shù)據(jù)為雙精度型 語法:double(X)unit8、unit16轉(zhuǎn)換數(shù)據(jù)為8位、16位無符號(hào)整型: i=unit8(x)i=unit16(x)im2unit8 轉(zhuǎn)換圖像陣列為8位無符號(hào)整型
語法:I2=im2unit8(I1)RGB2=im2unit8(RGB1)I=im2unit8(BW)X2=im2unit8(X1,'indexed')im2unit16 轉(zhuǎn)換圖像陣列為16位無符號(hào)整型
語法:I2=im2unit16(I1)RGB2=im2unit16(RGB1)I=im2unit16(BW)X2=im2unit16(X1,'indexed')
四、Matlab常用快捷鍵
1.在命令窗口(Command Window)中:
1)【上、下鍵】――切換到之前、之后的命令,可以重復(fù)按多次來達(dá)到你想要的命令
2)clc――清除命令窗口顯示的語句,此命令并不清空當(dāng)前工作區(qū)的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear――這個(gè)才是清空當(dāng)前工作區(qū)的變量命令,常用語句clear all來完成 4)【Tab】鍵――在command窗口,輸入一個(gè)命令的前幾個(gè)字符,然后按tab鍵,會(huì)彈出前面含這幾個(gè)字符的所有命令,找到你要的命令,回車,就可以自動(dòng)完成。目前討論結(jié)果是:matlab6.5版本中,如果候選命令超過100個(gè),則不顯示。而在matlab7以后版本中,則沒有這個(gè)限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序運(yùn)行過程中,可能由于程序編寫的失誤,導(dǎo)致程序不停的運(yùn)行,在命令窗口輸入“Ctrl+C”可以將運(yùn)行的程序停下來,而不需要將整個(gè)Matlab程序關(guān)掉。不過進(jìn)行此操作的前提是能夠激活切換到命令窗口才行。6)edit+函數(shù)名 查看或編輯源文件 7)who 顯示當(dāng)前變量名列表 8)whos 顯示變量詳細(xì)列表
9)which+函數(shù)名 證實(shí)該函數(shù)是否在當(dāng)前路徑 10)what 列出當(dāng)前路徑的所有matlab文件 11)load 加載外部文件 12)save 保存文件到外部 13)20.matlab的幫助函數(shù): 14)help 15)help+函數(shù)名或help+函數(shù)類名 精確查詢 16)helpwin 打開幫助窗口 17)helpwin+函數(shù)名 精確查詢 18)helpdesk 打開幫助窗口 19)doc 打開幫助窗口
20)doc+函數(shù)名 打開幫助窗口,精確查詢
21)lookfor+關(guān)鍵字 這個(gè)是matlab中的谷歌,模糊查詢
2.在編輯器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加縮進(jìn)(對(duì)多行有效)2)3)4)5)6)【Ctrl+[】--減少縮進(jìn)(對(duì)多行有效)
【Ctrl+I】--自動(dòng)縮進(jìn)(即自動(dòng)排版,對(duì)多行有效)【Ctrl+R】――注釋(對(duì)多行有效)【Ctrl+T】――去掉注釋(對(duì)多行有效)
【Ctrl+B】――括號(hào)配對(duì)檢查(對(duì)版本6.5有效,但版本7.0無效,不知道是取消了還是換了另外的快捷鍵,請(qǐng)大牛們指點(diǎn),其他版本沒有測(cè)試過)7)【F12】――設(shè)置或取消斷點(diǎn) 8)【F5】――運(yùn)行程序
五、Matlab學(xué)習(xí)心得
接觸Matlab一個(gè)多月,從剛開始連最基本的操作都不會(huì),到現(xiàn)在能夠熟練地運(yùn)用Matlab解決問題。雖然現(xiàn)在學(xué)到的也只是皮毛而已,離精通還相差甚遠(yuǎn),但至少為以后研究生期間的學(xué)習(xí)打下了良好的基礎(chǔ)。下面我就簡(jiǎn)單的談一下這一個(gè)月來的學(xué)習(xí)感想。
首先,想要學(xué)好Matlab必須有一定數(shù)學(xué)基礎(chǔ)。Matlab軟件是與高等數(shù)學(xué),計(jì)算機(jī)科學(xué)相結(jié)合的軟件。所以,當(dāng)你學(xué)習(xí)Matlab時(shí),你也得會(huì)一定的數(shù)學(xué)。你要盡量多的熟悉matlab自帶的函數(shù),及其作用,因?yàn)閙atlab的自帶函數(shù)特別多,基本上能夠滿足一般的數(shù)據(jù)和矩陣的計(jì)算,所以基本上不用你自己編函數(shù)。這一點(diǎn)對(duì)你的程序非常有幫助,可以使你的程序簡(jiǎn)單,運(yùn)行效率高,可以節(jié)省很多時(shí)間。
其次,要注重基礎(chǔ)知識(shí)于實(shí)際操作結(jié)合。你把基本的知識(shí)看過之后,就需要找一個(gè)實(shí)際的程序來動(dòng)手編一下,不要等所有的知識(shí)都學(xué)好之后再去編程,你要在編程的過程中學(xué)習(xí),程序需要什么知識(shí)再去補(bǔ)充。在遇到問題時(shí),不要光看別人如果解決,也不要光想怎么解決,自己坐下來,動(dòng)手自己解決一下,那你就會(huì)把不是你的知識(shí)變成自己的知識(shí)。
最后,也是最重要的一點(diǎn)就是堅(jiān)持。MATLAB涉及的領(lǐng)域太多,每個(gè)領(lǐng)域里面都缺乏足夠的專家分布在你周圍。那么我們很難有機(jī)會(huì)接觸到真正的高手,對(duì)我們的技術(shù)細(xì)節(jié)一一指點(diǎn)。在遇到實(shí)際問題時(shí),就只能靠自己去摸索。常常是再堅(jiān)持一兩個(gè)小時(shí),就能夠解決你的問題。最大的成就感,就在付出了極大的心血和耐心,才取得一個(gè)艱難的小勝利。
第五篇:MATLAB總結(jié)與上機(jī)指南
化工計(jì)算中常用的MATLAB命令總結(jié)
化學(xué)工程中的計(jì)算問題一般比較復(fù)雜, 其操作的數(shù)據(jù)對(duì)象通常是數(shù)組, 具體計(jì)算涉及到插值、求積分、參數(shù)擬合、解常微分和偏微分微分方程、解線性和非線性方程等。MATLAB是新一代的科學(xué)計(jì)算語言, 在解決上述問題上, 相對(duì)于FORTRAN、C 和BASIC等傳統(tǒng)的計(jì)算語言具有明顯的優(yōu)越性。本文針對(duì)應(yīng)用MATLAB 解決化工中的典型問題進(jìn)行計(jì)算常用方法和命令做以小結(jié)。1.最小二乘法擬合 1.1 最小二乘擬合直線
函數(shù)
lsline 格式
lsline
%最小二乘擬合直線
h = lsline
%h為直線的句柄 1.2約束線性最小二乘
有約束線性最小二乘的標(biāo)準(zhǔn)形式為
minx1Cx?d222
sub.to
A?x?b
Aeq?x?beq
lb?x?ub
其中:C、A、Aeq為矩陣;d、b、beq、lb、ub、x是向量。在MATLAB5.x中,約束線性最小二乘用函數(shù)conls求解。
函數(shù)
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,若沒有不等式約束,則設(shè)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為指定優(yōu)化參數(shù) [x,resnorm] = lsqlin(…)
% resnorm=norm(C*x-d)^2,即2-范數(shù)。[x,resnorm,residual] = lsqlin(…)
%residual=C*x-d,即殘差。
[x,resnorm,residual,exitflag] = lsqlin(…)
%exitflag為終止迭代的條件 [x,resnorm,residual,exitflag,output] = lsqlin(…)
% output表示輸出優(yōu)化
信息
[x,resnorm,residual,exitflag,output,lambda] = lsqlin(…)
% lambda為解x的Lagrange乘子
1.3 非線性最小二乘
非線性最小二乘(非線性數(shù)據(jù)擬合)的標(biāo)準(zhǔn)形式為
minxf(x)?f1(x)2?f2(x)2???fm(x)2?L
其中:L為常數(shù)
在MATLAB5.x中,用函數(shù)leastsq解決這類問題,在6.0版中使用函數(shù)lsqnonlin。
?f1(x)???f2(x)? 設(shè)F(x)????????fm(x)?則目標(biāo)函數(shù)可表達(dá)為minx12F(x)22?1?fi(x)2 2i其中:x為向量,F(xiàn)(x)為函數(shù)向量。函數(shù)
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為指定優(yōu)化參數(shù),若x沒有界,則lb=[ ],ub=[ ]。
[x,resnorm] = lsqnonlin(…)% resnorm=sum(fun(x).^2),即解x處函數(shù)值。[x,resnorm,residual] = lsqnonlin(…)
% residual=fun(x),即解x處fun的值。[x,resnorm,residual,exitflag] = lsqnonlin(…)
%exitflag為終止迭代條件。[x,resnorm,residual,exitflag,output] = lsqnonlin(…)%output輸出優(yōu)化信息。[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(…)
%lambda為
Lagrage乘子。
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqnonlin(…)
%fun
在解x處的Jacobian矩陣。
多項(xiàng)式 2.1 多項(xiàng)式求值
函數(shù)名稱:polyval 調(diào)用格式:y=polyval(p,x),[y,delta]=polyval(p,x,S)返回多項(xiàng)式p在x點(diǎn)處的取值。X可以是向量也可以是矩陣。[y,delta] = polyval(p,x,S)同時(shí)還生成誤差估計(jì)。2.2 多項(xiàng)式求根
函數(shù)名稱:roots 調(diào)用格式:r=roots(c)
返回一個(gè)元素為多項(xiàng)式c的根的列向量。行向量中包含按降冪排列的多項(xiàng)式的系數(shù),如果c中包含n+1個(gè)元素,則多項(xiàng)式的表達(dá)式為:c1sn+…+cns+cn+1。3 插值 3.1 一維插值
函數(shù)名稱:interp1 調(diào)用格式:yi=interp1(x,Y,xi), yi=interp1(x,Y,xi,method)MATLAB中有兩類一維數(shù)據(jù)插值方法:多項(xiàng)式插值法和基于FFT的插值法。函數(shù)interp1采用多項(xiàng)式插值法,它用多項(xiàng)式擬合所給出的數(shù)據(jù),然后在插值點(diǎn)上根據(jù)多項(xiàng)式算出相應(yīng)的值。調(diào)用格式中,xi為需要插值的位置所組成的向量,yi 為根據(jù)插值算法求得的值所組成的向量。x,Y為已知的數(shù)據(jù)點(diǎn)向量。參數(shù)method用于確定具體的插值方法,包括:
‘linear’表示采用線性插值方法;‘cubic’表示采用三次插值的方法; ‘nearest’表示采用最近點(diǎn)插值法;‘spline’表示用三次樣條插值方法。3.2 二維插值
函數(shù)名稱:interp2 調(diào)用格式
ZI = interp2(X,Y,Z,XI,YI)
返回矩陣ZI,其元素包含對(duì)應(yīng)于參量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’:雙三次插值。非線性數(shù)據(jù)(曲線)擬合
非線性曲線擬合是已知輸入向量xdata和輸出向量ydata,并且知道輸入與輸出的函數(shù)關(guān)系為ydata=F(x, xdata),但不知道系數(shù)向量x。今進(jìn)行曲線擬合,求x使得下式成立:
minx1F(x,xdata)?ydata222?1?(F(x,xdatai)?ydatai)2 2i在MATLAB5.x中,使用函數(shù)curvefit解決這類問題。函數(shù)
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(…)參數(shù)說明:
x0為初始解向量;xdata,ydata為滿足關(guān)系ydata=F(x, xdata)的數(shù)據(jù); lb、ub為解向量的下界和上界lb?x?ub,若沒有指定界,則lb=[ ],ub=[ ];
options為指定的優(yōu)化參數(shù);
fun為擬合函數(shù),其定義方式為:x = lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定義為
function F = myfun(x,xdata)F = …
% 計(jì)算x處擬合函數(shù)值fun的用法與前面相同; resnorm=sum((fun(x,xdata)-ydata).^2),即在x處殘差的平方和; residual=fun(x,xdata)-ydata,即在x處的殘差; exitflag為終止迭代的條件; output為輸出的優(yōu)化信息; lambda為解x處的Lagrange乘子;
jacobian為解x處擬合函數(shù)fun的jacobian矩陣。
數(shù)值積分
5.1 一元函數(shù)的數(shù)值積分
函數(shù)名稱:
quad、quadl、quad8 調(diào)用格式 q = quad(fun,a,b)
%近似地從a到b計(jì)算函數(shù)fun的數(shù)值積分,誤差為10。給fun輸入向量x,應(yīng)返回向量y,即fun是一單值函數(shù)。q = quad(fun,a,b,tol)
%用指定的絕對(duì)誤差tol代替缺省誤差。tol越大,函數(shù)計(jì)算的次數(shù)越少,速度越快,但結(jié)果精度變小。
q = quad(fun,a,b,tol,trace,p1,p2,…)
%將可選參數(shù)p1,p2,…等傳遞給函數(shù)fun(x,p1,p2,…),再作數(shù)值積分。若tol=[]或trace=[],則用缺省值進(jìn)行計(jì)算。
[q,n] = quad(fun,a,b,…)%同時(shí)返回函數(shù)計(jì)算的次數(shù)n … = quadl(fun,a,b,…)
%用高精度進(jìn)行計(jì)算,效率可能比quad更好。… = quad8(fun,a,b,…)
%該命令是將廢棄的命令,用quadl代替。
5.2 一元函數(shù)的數(shù)值積分
函數(shù)名稱:
dblquad 功能
矩形區(qū)域上的二重積分的數(shù)值計(jì)算
調(diào)用格式
q = dblquad(fun,xmin,xmax,ymin,ymax)
調(diào)用函數(shù)quad在區(qū)域[xmin,xmax, ymin,ymax]上計(jì)算二元函數(shù)z=f(x,y)的二重積分。輸入向量x,標(biāo)量y,則f(x,y)必須返回一用于積分的向量。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
用指定的精度tol代替缺省精度10-6,再進(jìn)行計(jì)算。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)
用指定的算法method代替缺省算法quad。method的取值有@quadl或用戶指定的、與命令quad與quadl有相同調(diào)用次序的函數(shù)句柄。
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,…)
將可選參數(shù)p1,p2,..等傳遞給函數(shù)fun(x,y,p1,p2,…)。若tol=[],method=[],則使用缺省精度和算法quad。非線性方程組的解
非線性方程組的標(biāo)準(zhǔn)形式為:F(x)= 0 其中:x為向量,F(xiàn)(x)為函數(shù)向量。函數(shù)
fsolve 格式
x = fsolve(fun,x0)
用fun定義向量函數(shù),其定義方式為:先定義方程函數(shù)function F = myfun(x)。
F =[表達(dá)式1;表達(dá)式2;…表達(dá)式m] 保存為myfun.m,并用下面方式調(diào)用:x =
-6fsolve(@myfun,x0),x0為初始估計(jì)值。
x = fsolve(fun,x0,options)[x,fval] = fsolve(…)
fval=F(x),即函數(shù)值向量 [x,fval,exitflag] = fsolve(…)[x,fval,exitflag,output] = fsolve(…)[x,fval,exitflag,output,jacobian] = fsolve(…)
jacobian為解x處的Jacobian陣。
其余參數(shù)與前面參數(shù)相似。7 常微分方程數(shù)值解
函數(shù)名稱:ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb 功能
常微分方程(ODE)組初值問題的數(shù)值解 參數(shù)說明:
solver為命令ode45、ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一。
Odefun 為顯式常微分方程y’=f(t,y),或?yàn)榘换旌暇仃嚨姆匠蘉(t,y)*y’=f(t,y)。命令ode23只能求解常數(shù)混合矩陣的問題;命令ode23t與ode15s可以求解奇異矩陣的問題。
Tspan 積分區(qū)間(即求解區(qū)間)的向量tspan=[t0,tf]。要獲得問題在其他指定時(shí)間點(diǎn)t0,t1,t2,…上的解,則令tspan=[t0,t1,t2,…,tf](要求是單調(diào)的)。
Y0 包含初始條件的向量。
Options 用命令odeset設(shè)置的可選積分參數(shù)。P1,p2,… 傳遞給函數(shù)odefun的可選參數(shù)。調(diào)用格式
[T,Y] = solver(odefun,tspan,y0)
在區(qū)間tspan=[t0,tf]上,從t0到tf,用初始條件y0求解顯式微分方程y’=f(t,y)。對(duì)于標(biāo)量t與列向量y,函數(shù)f=odefun(t,y)必須返回一f(t,y)的列向量f。解矩陣Y中的每一行對(duì)應(yīng)于返回的時(shí)間列向量T中的一個(gè)時(shí)間點(diǎn)。要獲得問題在其他指定時(shí)間點(diǎn)t0,t1,t2,…上的解,則令tspan=[t0,t1,t2,…,tf](要求是單調(diào)的)。
[T,Y] = solver(odefun,tspan,y0,options)%用參數(shù)options(用命令odeset生成)設(shè)置的屬性(代替了缺省的積分參數(shù)),再進(jìn)行操作。常用的屬性包括相對(duì)誤差值RelTol(缺省值為1e-3)與絕對(duì)誤差向量AbsTol(缺省值為每一元素為1e-6)。
[T,Y] =solver(odefun,tspan,y0,options,p1,p2…)
將參數(shù)p1,p2,p3,..等傳遞給函數(shù)odefun,再進(jìn)行計(jì)算。若沒有參數(shù)設(shè)置,則令options=[]。