【菜鳥入門!】Matlab零基礎快速入門教程

? ? ? ? 數學建模競賽中,編程軟件是必不可缺少的,比如大家都熟知的MATLAB多數同學們都會經常用到,今天給大家介紹一些MATLAB的基本元素,希望幫助大家更好的掌握編寫基本的函數!

變量和數組

? ? ? ?MATLAB 程序的基本數據單元是數組。一個數組是以行和列組織起來的數據集合,并且擁有一個數組名。數組中的單個數據是可以被訪問的,訪問的方法是數組名后帶一個括號,括號內是這個數據所對應行標和列標。標量在 MATLAB 中也被當作數組來處理——它被看作只有一行一列的數組。

? ? ? ?數組可以定義為向量或矩陣。向量一般來描述一維數組,而矩陣往往來描述二維或多維數組。在本書中,當我們討論一維數組時用向量表示,當我們討論二維或多維向量時用矩陣。如果在特殊情況下,同時遇到這兩種數組,我們就把他們通稱為“數組”。

? ? ? ?數組的大小(size)由數組的行數和列數共同決定,注意行數在前。一個數組所包含的數據多少可由行數乘列數得到。例如,下列數組的大小為

數組中的單個數據是可以被訪問的,訪問的方法是數組名后帶一個括號,括號內是這個數據所對應的行標和列標。如果這個數組是一個行向量或列向量,則只需要一個下標。例如上面的數組 A(2 1)為 3,C(2)為 2。一個MATLAB變量是一段包含一個數組的內存區,并且擁有一個用戶指定的變量名。通過適當的命令和它的變量名隨時可以就調用它和修改它。

MATLAB 的變量名必須以字母開頭,后面可以跟字母,數字和下劃線(_).只有前31個字符是有效的;如果超過了 31個字符,基余的字符將被忽略。如果聲明兩個變量,兩變量名只有第32個字符不同,那么MATLAB將它們當作同一變量對待。

編程隱患

確保你所聲明的變量名前 31 個字符是獨一無二的。否則,MATLAB 將無法辨認出它們的不同。

? ? ? ?當你編寫程序時,給變量起一個有意義的名字非常的重要。有意義的名字極大的提高了程序的可讀性和可維護性。像 day,month 和 year 這樣的名字意義非常明確,即使第一次看到也能理解。盡管空格不能用在 MATLAB 變量名中,但是可以用下劃線代替空格創造出有意義的變量名。比如,changerate 可以寫成 change_rate

好的編程習慣?

給你的變量起一個描述性的且易于記憶的變量名。例如,貨幣匯率可以 exchange_rate為變量名。這種方法將使得你的程序更加明確且易于理解。

? ? ? ? 在你所寫的程序的開頭列出一數據字典(data dictionary)十分的重要.數據字典列舉了你在本程序中用到的所有變量的定義。它的定義應包括本條目的所要描述的內容和它在執行時所在的單元。當編寫程序時,編定數據字典看似沒有必要。但是設想一下,在過了一段時間后,你或其他人要對此程序修改,這時數據字典就顯得十分的有用。

好的編程習慣

給每個程序創建一個數據字典以增強程序的可維護性。

? ? ? ?在 MATLAB 語言中是區分字母大小的,也就是說,大寫字母和小寫字母代表的東西是不同的。所以變量NAME,Name,name在MATLAB中是不同的。所以已用過的小寫變量名與一個新建大寫的變量名重名,這時使用時要特別地小心。在一般情況下,我們一律用小寫字母來表示。

好的編程習慣

在每次用到一個變量時,我們要確保變量名的大小寫的精確匹配。在變量名中只使用小寫字母是一個好的編程習慣。

? ? ? ?兩個最常見的變量類型是char型和double型。double 型的變量包括由64位雙精度浮點數構成的標量或數組。這種變量可以代表實數,虛數和復數。每個值的實部和虛部的變化范圍為正負10-308~10308,擁有15到16位有效數字。這是基本的數字數據類型。

? ? ? ?無論什么時侯,你將一個數值賦值于一個變量名,那么 MATLAB 將自動建立一個double型變量。例如,下面語句創建了一個以var為變量名的double型變量,包含了一個 double型的單個元素,存儲了復數值(1+i)

圖片

? ? ? ?char型的變量包括由16位數值構成的標量或數組,每一個16位數代表一個字符。這個類型的經常用于字符串操作,當一個字符或字符串賦值于一個變量名時,系統會自動建立一個char型變量。例如,下面的這個語句創建了一個char 型變量comment,并存儲了一個字符串在其內。當這個語執行后,系統將會建立一個1×26的字符串數組。

圖片

? ? ? ?像C語言這樣的語言中,變量類型和變量在使用之前必須強制聲明。這種語言我們叫它強類型語言。相對地,像MATLAB這樣的叫做弱類型語言。通過簡單的賦值形式就可以創建變量,變量類型取決于創建時的類型。

MATLAB 變量的初始化

當變量初始化時,MATLAB 將會自動建立變量。有三種方式初始化 MATLAB 中的變量:

1.用賦值語句初始化變量

2.用 input 函數從鍵盤輸入初始化變量

01用賦值語句初始化變量

最簡單的創建和初始化一個變量的方法是用賦值語句賦予變量一個或多個值。賦值語句的一般形式如下

圖片

? ? ? ?var 是變量名,expression 可以是一個標量、一個數組或常量、其他變量和數學運算符號(+、-)的聯合。這個表達式(expression)的值是通過一般的數學運算法則計算出來的,然后將產生的結果存儲到變量 var 中。下面是一些用賦值語句初始化的變量:

? ? ?? 第一個例子創建了一個 double 類型的標量變量,存儲了一個虛數 40i。第二個例子創建了一個表達式 var2,把 var/5 的值存儲于內。第三個例子創建了一個數組 array,并存儲了一個 4 元素的行向量于內。最后一個例子顯示了多個賦值語句可寫在同一行,中間用逗號或分號隔開。注意如果在賦值語句執行時變量已經存在,那么這個變量原有的值將被覆蓋。

? ? ? ?正如第三個例子顯示的,數據數組也可以初始化變量。我們可以用是括號()和分號建立數組。所有元素按行階排序,換句話說,每一行的值從左向右,頂部的行置于最前,底部的行置于最后。在一行內單個數值可用空格或逗號隔開,而行與行之間要與則用分號隔開,或另起一行書寫。下面的表達式都是合法的,能用于建立一個變量:

注意一個數組每一行元素的個數必須完全相同,每一列元素的個數也必須完全相同.

圖片

這樣的表達式是非法的,因為第一行有3個元素,第二行有只有 2個元素.?

編程隱患

每一行元素的個數必須完全相同,每一列元素的個數也必須完全相同.試圖創建一個不同行(列)擁有不同數目元素的數組,在編譯時將會出現錯誤.?

用于初始化數組的表達式可以包括代數符號或事先已經定義好的數組.例如賦值語句

圖片

定義了數組 a=[0 8]和數組 b=[8 7 0 8].?

? ? ? ?當我們創建一個數組時,不是每一個元素都必須定義.如果要定義一個特殊的數組,或只有一個或幾個元素沒有定義,那么之前的那些元素將會自動創建,并初始化為 0.例如,如果數組 c 事先沒有定義,語句 c(2,3)=5 將會創建一矩陣

圖片

?。相似地,指定一個值賦予一個存在的數組,但超過了這個數組的大小。例如,假設存在一數組 d=[1 2],下面這個語句

圖片

將會制造出數組 d=[1 2 0 4].?

? ? ? ? 在每個賦值語句末的分號有特殊的目的:無論在何時一個表達式在賦值語句中被賦值,分號將會中止變量值的重復。如果句末沒有分號,變量值將會自動顯示在命令窗口(The Command Windows)中。

? ? ? ? 如果在賦值語句末有分號,這種重復將會消失。重復是一個用于檢查你的工作極好的方法,但是它降低了運行速度。因此,我們在一般情況下總是禁止重復。盡管如此,重復計算的結果提供了一個強大的應急調試器。如果你不能確定一個特定的賦值語句結果是多少,這時你可以去掉這個語句后的分號,當這個語句編譯時,結果會顯示在命令窗口(The Command Windows)。

好的編程習慣

在 MATLAB 賦值語句后加上一個分號來禁止變量值在命令窗口(The Command Windows)的重復。這將大大提高編譯的速度。

好的編程習慣

如果你在調試程序時需要檢測一個語句的結果,可能把句后的分號去掉,這樣結果將會出現在命令窗口(The Command Windows)。

02用捷徑表達式賦值

? ? ? ?創建一個小數組用一一列舉出元素的方法是比較容易的,但是當我們創建包括成千上萬個元素的數組怎么辦?把每一個元素列舉出來則不太現實。

? ? ? ?MATLAB 提供一種專門的捷徑標記法,這種方法用克隆運算符(colon operator)適用于上述情況。克隆運算符指定一系列的數值,它指定了這個系列數的第一值,步增和最后一個值。它的一般順序始下

圖片

? ? ? ?first代表數組的每一個值,incr代表步增量,last代表這個數組的最后一個值。如果步增量為1,那么步增量可省略,而變成了first:last格式。

例如,表達式 1:2:10 是創建一個 1×5 行向量[1 3 5 7 9]的簡便方法。

圖片

用克隆標記法初始化一個含有一百個元素的數組

圖片

,語句如下

圖片

捷徑表達式可以聯合轉置運算符(’)來初始化行向量,或更加復雜的矩陣。轉置運算符可以在需要的情況下完成行和列的轉換。因為這個表達式

圖片

產生一個 4 元素行向量[1 2 3 4],然后將其轉換成 4 元素的列向量

圖片

,相似地,表達式

圖片

將會創建一個矩陣

圖片

03用內置函數來初始化

? ? ? 數組也可以用 MATLAB 內置函數創始化。例如,函數 zeros 可以初始化任何大小的全為零的數組。用許多形式的 zeros 函數。如果這個函數的參數只是一個標量,那么 MATLAB將會創建一個方陣,行數和列數均為這個參數。如果這個函數有兩個標量參數,那么第一個參數代表行數,第二個參數代表列數。因為 size 函數所返回的一個數組的行數和列數,所以它可以聯合 zeros 函數來創建一個相同大小零矩陣。下面是一些用到 zeros 函數的例子。

這些語句產生下列的數組

相似地,ones 函數產生的數組包含的元素全為 1,eye 函數通常用來產生單位矩陣,只有對角線的元素為 1.其他元素為 0.表 2.1 列出一些用于初始化變量的函數.?

04用關鍵字 input 初始化變量

關鍵字 input 用來提示使用者和直接從鍵盤輸入初始化變量.當腳本文件(Script files)時,它可以用來提示使用者輸入.input 函數在命令窗口(The Command Windows)顯示提示語句,并等待用戶輸入一個值.例如,下面的賦值語句:?

圖片

當這個語句被編譯時,MATLAB 打印出字符串 enter an input value:,然后等待用戶回復.如果要只輸入一個數,那么只需要直接鍵入,如果要輸入一個數組,則必須帶上中括號([]).不管怎樣,當按下回車鍵時.在窗口輸入的任何值都會被儲入變量 my_val.如果只按下回車鍵,那么這個變量就存儲了一個空矩陣.?

如果 input 函數中有字符's'做為它的第二個參數,輸入的數據就被當字符串.因此,語句

圖片

把數值 1.23 存儲到 in1 中.而語句

圖片

把字符串 1.23 存儲到 in2 中.?

了解更多數學建模干貨,可關注GZH“數模樂園”

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711777.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

rm刪除未釋放空間,linux sync有時不起作用

此時需要重啟系統即可. Linux中的sync命令用于將文件系統的緩沖區數據立即寫入磁盤,以確保數據的持久性。123456 sync命令沒有任何選項,簡單執行即可。它會將文件系統緩沖區中的數據寫入磁盤,并更新文件系統的超級塊及其他元數據。使用sync命…

Vue.js的雙向綁定原理

Vue的雙向綁定 vue雙向綁定是其最重要的核心亮點,其原理也很簡單,這里做個簡單總結 vue2的雙向綁定是利用的Object.definePropertyvue3的雙向綁定是利用的 ES6Porxy中的defineProperty(target, propKey, propDesc 其作用類似于Object.defineProperty …

您想要擁有 Apple Vision Pro 的原因

自從2024年2月2日Apple Vision Pro發布以來,網上已經有很多關于如何使用這款蘋果最新設備的示例。該平臺引入的空間計算新世界能夠完成許多在其他設備上無法完成的事情。Reddit 上的這個人能夠以 51202160 的分辨率從他的 PC 上串流游戲!在本文中&#x…

SpringMVC01、回顧MVC

1、回顧MVC 1.1、什么是MVC MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟件設計規范。是將業務邏輯、數據、顯示分離的方法來組織代碼。MVC主要作用是降低了視圖與業務邏輯間的雙向偶合。MVC不是一種設計模式,MVC是一種架構模式。…

Docker部署前后端服務示例

使用Docker部署js前端 1.創建Dockerfile 在項目跟目錄下創建Dockerfile文件: # 使用nginx作為基礎鏡像 FROM nginx:1.19.1# 指定工作空間 WORKDIR /data/web# 將 yarn build 打包后的build文件夾添加到工作空間 ADD build build# 將項目必要文件添加到工作空間&a…

數據結構—>帶你深入了解單鏈表(基礎篇)

?作者簡介:大家好,我是橘橙黃又青,一個想要與大家共同進步的男人😉😉 🍎個人主頁:橘橙黃又青-CSDN博客 前面我們學習了順序表,今天我們來學習與順序表類似的單鏈表 1.&#x1f3…

鴻蒙Harmony應用開發—ArkTS聲明式開發(通用屬性:透明度設置)

設置組件的透明度。 說明: 從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。 opacity opacity(value: number | Resource) 設置組件的不透明度。 卡片能力: 從API version 9開始,該接口…

香橙派AIpro快速上手指南

1 前言 作為業界首款基于昇騰深度研發的AI開發板,Orange Pi AIpro無論在外觀上、性能上還是技術服務支持上都非常優秀,其8/20TOPS澎湃算力是目前開發板市場中所具備的最大算力,能覆蓋生態開發板者的主流應用場景,讓用戶實踐各種創…

深入理解Redis中的漸進式Rehash技術

1. 引言 Redis是一款高性能的鍵值存儲系統,被廣泛應用于緩存、隊列、計數器等場景,因其快速、穩定的特性備受開發者青睞。在Redis的背后,有著許多復雜的數據結構和算法支撐著其高效運行,而其中之一就是Rehash操作。 Rehash是Redis中的一個關鍵操作,負責在數據量增加時對…

Web自動化測試平臺開發---Automated_platform

一、項目簡介 歷時一個假期,Automated_platform 第一版完工,是一款基于po模式的自動化測試平臺,采用后端技術為DjangoceleryRabbitMQmysql 配置mysql數據庫,進行數據遷移后,運行項目后,即可成功訪問http://127.0.0.1:8…

5. 升級 Spring Boot(Upgrading Spring Boot)

5. 升級 Spring Boot(Upgrading Spring Boot) 項目 wiki 提供如何從 Spring Boot 早期版本升級的說明。請按照 release notes 部分查找要升級到的版本。 升級說明總是版本說明的第一部分。如果您的版本落后一個以上,請確保您已經查看了所跳…

【軟考】數據結構之隊列和棧

目錄 1.例題一1.1題目1.2 題目截圖1.3 題目分析 1.例題一 1.1題目 輸出受限的雙端隊列是指元素可以從隊列的兩端輸入,但只能從隊列的一端輸出,如下圖所示,若有e1,e2,e3,e4依次進入輸出受限的雙端隊列&…

Nginx-location匹配規則

每次配置Nginx的時候,不是多個這匹配不上就是那匹配不上,多個斜線少個斜線的,然后頭疼,尤其多層代理之后,真是瘋狂掉頭發 #mermaid-svg-Z1ScpZFefeixtnn3 {font-family:"trebuchet ms",verdana,arial,sans-s…

Linux——進程控制(一)進程的創建與退出

目錄 一、進程創建 1.寫時拷貝 2.創建多個進程 二、進程終止 1.main函數的返回值 2.bash中的$? 3.自定義退出碼 4.C語言的錯誤碼 5.錯誤碼與退出碼的區別 6.代碼異常終止 7.exit函數 8.總結 一、進程創建 在之前,我們學過linux中的非常重要的函數——…

Git 將dev1.0分支的某些commit合并到dev分支上

前言:dev1.0是新開發的需求內容,但是部分熱更內容在此分支提交,如今需要把熱更的內容發到dev環境,但是dev1.0新需求未開發完畢,不可更新到dev環境。 現在在dev1.0分支 git pull #拉取當前分支最新內容git log #查看最…

3. 文字陰影

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>文字陰影</title><style>*{margin: …

速賣通店鋪營銷秘籍:如何巧妙運用活動提升轉化率

對于速賣通賣家而言&#xff0c;想要提升店鋪的成交率&#xff0c;除了依賴付費推廣外&#xff0c;更重要的是如何通過店鋪營銷來吸引和留住潛在買家。今天&#xff0c;我們就來深入探討一下速賣通店鋪營銷的幾個關鍵策略。 首先&#xff0c;我們要明確一點&#xff0c;速賣通平…

IDEA中的Structure模塊使用詳解

IDEA中的Structure模塊使用詳解 類方法的展示 從左往右介紹&#xff1a; 1、最開頭的 m 標識是表示為方法&#xff0c;如出現 f 標識則表示為屬性&#xff1b; 2、m后面跟著的是方法或者屬性的訪問修飾符&#xff1a; #紅色關閉的鎖表示為private&#xff1b; #圓圈表示不帶…

使用Docker搭建一款實用的個人IT工具箱——It-Tools

作為程序員&#xff0c;在日常工作中&#xff0c;需要借助一些工具來提高我們工作效率&#xff0c;IT-Tools是為開發人員度身打造的一套便捷在線工具。它提供全面功能&#xff0c;使開發者能以更高效方式完成任務。經由IT-Tools&#xff0c;開發人員能輕松應對各類技術挑戰&…

qt QRadioButton 及QButtonGroup 使用

QRadioButton 放在組合框QGroupBox中&#xff0c;再點擊時&#xff0c;即使有多個QRadioButton按鈕&#xff0c;同時選中的也就只有一個。 如下圖所示&#xff0c; 對于多個QRadioButton&#xff0c;每個按鈕都寫一個槽函數是不太明智的選擇&#xff0c;需要將QRadioButton放在…