MATLAB知識點:條件判斷 if-elseif-else-end語句

?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。?

MATLAB教程新手入門篇(數學建模清風主講,適合零基礎同學觀看)_嗶哩嗶哩_bilibili


節選自?第4章:MATLAB程序流程控制

ifelseifelseend是MATLAB中的四個關鍵字,在第二章中我們強調過:不能定義與MATLAB關鍵字同名的變量。這四個關鍵字就構成了我們要學的第一種條件語句,后續我們將其簡稱為if語句

易錯點:elseif關鍵字中間不能加空格,不能寫成else if,這和CJava等語言不同。

注意:在使用if語句時,ifend這兩個關鍵字是無論如何都不能省略的。有很多新手在使用MATLAB時都會漏掉end這個關鍵字,導致后續無論輸入什么命令MATLAB都沒有反應,而elseif和else可以根據自己的需要來決定是否添加。

下面我們先看一個完整的if語句的示例(假設有四個分支),其對應的流程圖見右側:

注意,這里的語句1、語句2、語句3和語句4最終只能有一個被執行。如果表達式1成立(通常表達式返回一個邏輯值,值為邏輯值1則表示成立),則執行語句1,后面的表達式都不用判斷,它們對應的語句也都不會被執行;如果表達式1不成立,則會接著判斷表達式2是否成立,如果表達式2成立則會執行語句2,否則會接著判斷表達式3是否成立,如果表達式3成立則會執行語句3,如果表達式3也不成立則會執行語句4。

我們舉一個具體的例子:計算分段函數

你可以將這個分段函數想象成如下場景:給定一個同學的成績(假設為整數),輸出這個同學的等級。等級規則如下:90至100分為1級、80至89分為2級、60至79分為3級、低于60分為4級;如果成績小于0分或者大于100分,則代表成績輸入有誤,此時等級為0。

那么,應該怎樣用MATLAB表示這個分段函數呢?不熟練的同學可以先畫一個流程圖,其對應的MATLAB代碼如右側所示:

上面代碼中有一些要說明的點:

(1)判斷x是否位于[90,100]這個區間時,不能寫成90<=x<=100,MATLAB不支持這種連續的判斷。因此我們將其拆分成兩個條件:x>=90 && x<=100。這里用的是具有短路功能的邏輯與運算符&&,這樣判斷效率會更高。

(2)if只能有一個,但elseif可以有多個,它們后面都需要跟上相應的判斷條件。只有在if后面的條件不滿足時,才會判斷elseif后面的條件是否成立。

(3)else后面不能加上條件,當if和elseif后面的條件全部都不滿足時,才會執行else對應的語句。

(4)不需要在if、elseif、else和end所在的行的最后面添加冒號或者分號。

另外,假設我們不考慮輸入有誤的情況,即確保x的取值范圍在0至100之間時,我們可以對if和elseif后面的判斷條件進行簡化。顯然,可以去掉if后面的x<=100,因為x的取值范圍已經固定了;elseif后面的條件也能被簡化,以第一個為例,原來代碼中的判斷條件寫的是x>=80 && x<90,實際上我們可以直接寫成x>=80,這是因為只有當前面的判斷條件都不成立時才會到達當前的判斷條件,而前面的判斷條件不成立時意味著x<90。類似地,第二個elseif后面的條件都能簡化成x>=60,下面給出簡化后的代碼:

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

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

相關文章

webstorm 創建運行純Typescript項目

創建一個空項目&#xff0c;在項目根目錄創建一個tsconfig.json文件自動配置&#xff1a; 打開終端輸入tsc --init&#xff0c;即可自動生成tsconfig.json文件手動配置&#xff1a; 在項目根目錄下新建一個tsconfig.json文件,并配置如下內容 具體配置可以直接使用下面的配置&am…

【JavaEE】_Spring MVC項目之建立連接

目錄 1. Spring MVC程序編寫流程 2. 建立連接 2.1 RequestMapping注解介紹 2.2 RequestMapping注解使用 2.2.1 僅修飾方法 2.2.2 修飾類與方法 2.3 關于POST請求與GET請求 2.3.1 GET請求 2.3.2 POST請求 2.3.3 限制請求方法 1. Spring MVC程序編寫流程 1. 建立連接&…

如何開好一家汽車美容店,汽車美容保養與裝飾教學

一、教程描述 本套教程共由17張VCD組合而成&#xff0c;教程內容主要包括&#xff1a;美容店的設立和管理&#xff0c;汽車系統與內部結構&#xff0c;汽車美容工具與美容設備&#xff0c;美容用品的選擇與使用&#xff0c;車身打蠟鍍膜與內外清潔&#xff0c;車身拋光與漆面處…

Debezium發布歷史162

原文地址&#xff1a; https://debezium.io/blog/2023/09/22/debezium-2-4-cr1-released/ 歡迎關注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻譯&#xff0c;僅供參考&#xff0c;筆芯筆芯. Debezium 2.4.0.CR1 Released September 22, 2023 by Chris Cranford r…

(介紹與使用)物聯網NodeMCUESP8266(ESP-12F)連接新版onenet mqtt協議實現上傳數據(溫濕度)和下發指令(控制LED燈)

前言 本文詳細介紹了如何利用物聯網技術,通過NodeMCU ESP8266(ESP-12F)模塊連接到新版的OneNet平臺,使用MQTT協議實現數據的上傳與指令的下發。文中首先對NodeMCU ESP8266模塊及其特性進行了簡介,隨后詳細闡述了如何配置和使用MQTT協議連接到OneNet平臺,實現溫濕度數據的…

Azkaban 大數據 任務調度

參考視頻&#xff1a;尚硅谷大數據Azkaban 3.x教程&#xff08;全新發布&#xff09;_嗶哩嗶哩_bilibili Azkaban&#xff1a; 是一個定時、批量工作流任務調度器(工作流程調度&#xff0c;定時調度) 常見的開源調度系統&#xff1a; 簡單單一的任務調度&#xff1a; Linux的…

嵌入式驅動學習第一周——Linux錯誤碼以及 IS_ERR、ERR_PTR、PTR_ERR

前言 本節來學習Linux錯誤碼&#xff0c;因為內核中的函數常常返回指針&#xff0c;如果出錯&#xff0c;也希望能夠通過返回的指針體現出來。 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博…

【正點原子STM32】RNG硬件隨機數(隨機數發生器、真隨機和偽隨機、應用場景、RNG結構和原理、RNG相關寄存器和HAL庫驅動、RNG基本驅動步驟)

一、RNG簡介 二、RNG框圖介紹 三、RNG相關寄存器介紹 四、RNG相關HAL庫驅動介紹 五、RNG基本驅動步驟 六、編程實戰 七、總結 一、RNG簡介 隨機數發生器&#xff08;RNG&#xff09;在計算機科學和密碼學中具有廣泛的應用場景&#xff0c;包括但不限于以下幾個方面&#xff1a…

QML中動態表格修改數據

1.qml文件中的實現代碼 import QtQuick 2.15 import QtQuick.Window 2.15import QtQuick.Controls 2.0 import Qt.labs.qmlmodels 1.0 import QtQuick.Layouts 1.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")TableModel{id:table_model…

Python內置函數11——globals()、locals()

文章目錄 概要基礎用法 概要 globals()和locals()都是內置函數&#xff0c;用于獲取當前命名空間中的變量。 globals()函數返回全局命名空間的字典&#xff0c;包括全局變量、函數和模塊。它返回一個表示全局命名空間的字典。你可以使用該函數來查看和修改全局命名空間中的變量…

深入剖析k8s-控制器思想

引言 本文是《深入剖析Kubernetes》學習筆記——《深入剖析Kubernetes》 正文 控制器都遵循K8s的項目中一個通用的編排模式——控制循環 for {實際狀態 : 獲取集群中對象X的實際狀態期望狀態 : 獲取集群中對象X的期望狀態if 實際狀態 期望狀態 {// do nothing} else {執行…

buuctf misc做題筆記

喵喵喵 使用stegsolve.jar&#xff0c;按BGR順序提取出一個png圖片&#xff0c;是一個一半得二維碼&#xff0c;修改圖片高度后&#xff0c;解析出一個百度網盤地址&#xff0c;https://pan.baidu.com/s/1pLT2J4f 下載得到壓縮包flag.rar。解壓成功&#xff0c;但是報一個出錯…

4 在QEMU硬件模擬器中運行開源鴻蒙OpenHarmony4.1的操作系統,無需實體開發板

在QEMU硬件模擬器中運行開源鴻蒙OpenHarmony4.1的操作系統&#xff0c;無需實體開發板 作者將狼才鯨日期2024-03-01 先下載源碼和編譯程序&#xff1a; 查看 開源鴻蒙OpenHarmony4.1源碼下載、編譯&#xff0c;生成OHOS_Image可執行文件的最簡易流程 我準備在QEMU模擬器中運行…

LangChain---大型語言模型(LLM)的標準接口和編程框架

1.背景說明 公司在新的一年規劃中突然提出要搞生成式AI(GenAI)的相關東西&#xff0c;在公司分享的參考資料中了解到了一些相關的信息&#xff0c;之所以想到使用LangChain&#xff0c;是因為在應用中遇到了瓶頸問題&#xff0c;除了已經了解和研究過的OpenAI的ChatGpt&#xf…

藍橋杯Java B組歷年真題(2013年-2019年)

一、2013年真題 1、世紀末的星期 使用日期類判斷就行&#xff0c;這里使用LocalDate&#xff0c;也可以使用Calendar類 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:無需package // 2: 類名必須Main, 不可修改p…

1小時網絡安全事件報告要求,持安零信任如何幫助用戶應急響應?

12月8日&#xff0c;國家網信辦起草發布了《網絡安全事件報告管理辦法&#xff08;征求意見稿&#xff09;》&#xff08;以下簡稱“辦法”&#xff09;。擬規定運營者在發生網絡安全事件時應當及時啟動應急預案進行處置。 1小時報告 按照《網絡安全事件分級指南》&#xff0c…

速盾:動態網站用cdn更慢嗎

當談到網站速度時&#xff0c;內容傳遞網絡&#xff08;Content Delivery Network&#xff0c;CDN&#xff09;是不可忽視的一個因素。很多人可能有疑惑&#xff0c;動態網站使用CDN是否會導致加載速度變慢。為了解決這個問題&#xff0c;我們需要了解動態網站和CDN的工作原理&…

mybatis動態加載mapper.xml

mybatis動態加載mapper.xml mybatis動態加載mapper.xml、springboot mybatis動態加載mapper.xml 教程連接&#xff1a;https://blog.csdn.net/weixin_44480167/article/details/136356398

測試linux系統某些文件屬性之test命令

要檢測系統上某些文件或相關屬性時&#xff0c;我們可以使用test命令&#xff0c;比如&#xff1a;檢查/root/ztj.txt文件是否存在&#xff0c;可以使用test -e /root/ztj.txt命令&#xff0c;不過執行結果不會顯示任何信息&#xff0c;需配合$?或&&及||來展現具體結果…

Find My掃地機器人|蘋果Find My技術與機器人結合,智能防丟,全球定位

掃地機器人又稱自動打掃機、智能吸塵、機器人吸塵器等&#xff0c;是智能家電的一種&#xff0c;能憑借人工智能&#xff0c;自動在房間內完成地板清理工作。一般采用刷掃和真空方式&#xff0c;將地面雜物先吸納進入自身的垃圾收納盒&#xff0c;從而完成地面清理的功能。現今…