MATLAB2-結構化編程和自定義函數-臺大郭彥甫視頻

目錄

if elseif else

switch case otherwise

while

exercise練習

for

預宣告

練習題

break

tips編程的小技巧

functions函數

練習題

函數句柄


if elseif else

如果condition為真,執行語句

if condition1statement1
elseif condition2statement2
elsestatement3
end

實際例子:

a = 5;
if rem(a,2) == 0%余數remainderdisp('a is even')%偶數
elsedisp('a is odd')%奇數
end

運行結果:a is odd

switch case otherwise

用switch語句內容判斷執行:

switch expressioncase value1statement1case value2statement2otherwisestatement
end

實際例子:

input_num = 10;
switch input_numcase -1disp('negative 1')case 0disp('zero')case 1disp('positive 1')otherwisedisp('other value')
end

運行結果與input_num有關,例如這個結果為:other value

while

標準:

while expressionstatement
end

舉例:

n = 1;
while prod(1:n)<1e100%prod數組的乘積 1e100是1*10的100次方n = n+1;
end

運行結果:計算1累乘到小于10的100次方有多少個數--n=70

exercise練習

%use while loop to calculate the summation of the series 1+2+3...+999

m = 1;summation = 0;while m <1000summation = summation + m;m = m + 1;endsummation

運行結果:

for

標準:

for variable=start:increment:endcommand

例子:

for n = 1:2:10a(n)=2^n;
end
disp(a(1:2:10))

結果:

預宣告

pre-allocating space to variables

能夠極大程度縮短代碼運行時間

例如:

tic
for ii = 1:2000for jj = 1:2000A(ii,jj) = ii+jj;end
end
toctic
A = zeros(2000,2000);
for ii = 1:size(A,1)for jj = 1:size(A,2)A(ii,jj) = ii+jj;end
end
toc

結果發現,時間差距還是很大,所以預宣告還是很重要的:

練習題

A = [0 -1 4;9 -14 25;-34 49 64];
B = A;
for i = 1:size(B,1)for j = 1:size(B,2)if B(i,j)<0B(i,j) = -B(i,j);endend
end
B

運行結果(這玩意太簡單了):

break

就是跳出循環,跟c/c++或者python邏輯same

x = 2;k = 0;error = inf;
error_threshold = 1e-32;
while error > error_thresholdif k>100breakendx = x-sin(x)/cos(x);error = abs(x - pi);k = k + 1;
end

tips編程的小技巧

  • 在腳本開頭,使用clear all清除之前的變量,用close all關閉所有圖形窗口。
  • 在命令末尾使用分號;,以抑制不必要的輸出。
  • 使用省略號...使腳本更具可讀性,比如示例中對矩陣A的分行定義。
  • 若要在腳本結束前終止它,可按下Ctrl + C

functions函數

例如自由落體的代碼x=x0+v0t+1/2gt^2的函數:

function x = freebody(x0,v0,t)
x = x0+v0.*t+1/2*9.8*t.*t;

(在matlab中也是.m文件

例如2 計算牛頓第二定律(沒記錯的話)F=ma:

function [a F] = acc(v2,v1,t2,t1,m)
a = (v2-v1)./(t2-t1);
F = m.*a;

練習題

就是輸入一個華攝氏度,輸入攝氏度,而且什么時候按回車什么時候停止:

我的代碼:(注意一點:一定要把輸入的字符F轉化為double,我說怎么一直不對 用str2double)


%輸入華攝氏度 輸出攝氏度
function F2C()%fahrenheit to centigrade
F = input('請輸入華攝氏度值:','s');
out0 = ['華攝氏度為:',num2str(F)];
disp(out0)
a = isempty(F);
while(a==0)C = (str2double(F)-32)/1.8;out = ['攝氏度是:',num2str(C)];disp(out)F = input('請輸入華攝氏度的值:','s');out0 = ['華攝氏度為:',num2str(F)];disp(out0)a = isempty(F);
end
disp('input is end')

運行結果:

函數句柄

就是不用寫.m文件直接在當前文檔中寫一個函數(我感覺有點亂,除非很簡單的函數方便

%% function handle函數句柄
f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x,f(x))

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

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

相關文章

LVGL移植2048小游戲全攻略

目錄 準備腳手架 修改源碼 對接觸摸 測試編譯 測試運行 這一節將以一個已經編寫好的 lvgl 小游戲 2048 描述如何將已經編寫完成的 lvgl 程序移植到開發板上。 準備腳手架 在這之前&#xff0c;我們先準備基礎的 LVGL 腳手架。可以直接從 lv_g2d_test 里復制過來進行修改…

在Unity2021中使用Profiler的Deep Profile功能時內存超高怎么辦?

這通常是因為Deep Profile會記錄每一幀所有函數調用的詳細信息&#xff0c;導致內存急劇增長&#xff0c;尤其在大型項目或復雜場景中4。別擔心&#xff0c;我來幫你分析原因并提供一些解決辦法。 理解 Deep Profile 的內存開銷與替代方案 Deep Profile是Unity Profiler的一個…

Ubuntu 設置中文輸入法

一、使用 IBus&#xff08;Ubuntu 默認框架&#xff09;步驟 1&#xff1a;安裝中文輸入法sudo apt install ibus-libpinyin ibus-pinyin步驟 2&#xff1a;添加輸入法打開 Settings > Keyboard > Input Sources。點擊 “”&#xff0c;搜索 Chinese (Intelligent Pinyin…

【Zephyr電源與功耗專題】14_BMS電池管理算法(三重驗證機制實現高精度電量估算)

文章目錄前言一、算法系統框架設計介紹1.1&#xff1a;核心設計方式1.2&#xff1a;系統架構圖1.3&#xff1a;核心參數配置二、核心算法詳解2.1&#xff1a;硬件數據采集與濾波2.2&#xff1a;三重算法機制2.2.1&#xff1a;庫侖計法&#xff08;電流積分&#xff09;2.2.2&am…

Python網絡與多任務編程:TCP/UDP實戰指南

Python網絡與多任務編程&#xff1a;TCP/UDP實戰指南 一、網絡編程 1.1 前言 網絡編程是現代軟件開發中不可或缺的一部分&#xff0c;它使得不同設備之間的數據交換成為可能。Python提供了強大的標準庫來支持各種網絡編程需求。 1.1.1 IP地址簡介 IP地址是互聯網上設備的唯一標…

Android8 binder源碼學習分析筆記(四)——ServiceManager啟動

前文回顧&#xff1a; Android8 binder源碼學習分析筆記&#xff08;三&#xff09;&#xff1a; https://blog.csdn.net/g_i_a_o_giao/article/details/151365630?spm1001.2014.3001.5502 Android8 binder源碼學習分析筆記&#xff08;二&#xff09;&#xff1a; https://…

Redis 大 Key 與熱 Key:生產環境的風險與解決方案

&#x1f525; Redis 大 Key 與熱 Key&#xff1a;生產環境的風險與解決方案 文章目錄&#x1f525; Redis 大 Key 與熱 Key&#xff1a;生產環境的風險與解決方案&#x1f9e0; 一、問題定義與識別&#x1f4a1; 什么是大 Key&#xff1f;&#x1f525; 什么是熱 Key&#xff…

C++算法題中的輸入輸出形式(I/O)

本文主要幫助刷leetcode題型快速適應完整帶輸入輸出的題&#xff08;機試、考試、比賽等&#xff09;接收能用cin就用cin 。cin 自動分割單詞 的特性&#xff08;cin 讀取字符串時會自動跳過空格 / 換行&#xff0c;將連續非空格字符作為一個 “單詞”&#xff09;一、單組輸入…

【左程云算法09】棧的入門題目-最小棧

目錄 棧的入門題目-最小棧 代碼演示 視頻鏈接 算法講解015【入門】棧的入門題目-最小棧 Leecode155 棧的入門題目-最小棧 實現一個getmin方法&#xff08;高效方法&#xff0c;即不用遍歷&#xff09;&#xff0c;希望能實現O&#xff08;1&#xff09; 做法&#xff1a…

Grafana與Prometheus實戰

&#x1f31f;Grafana的Dashboard的權限管理 創建團隊 創建用戶 設置團隊權限 &#x1f31f;Prometheus啟用https及認證功能 自建ca的證書 準備證書目錄 mkdir /app/tools/prometheus-2.53.4.linux-amd64/certs cd /app/tools/prometheus-2.53.4.linux-amd64/certs生成ca的…

FPGA交通燈設計報告(源碼+管腳約束+實物圖+設計報告)

基于FPGA的交通燈設計 摘要 本設計采用FPGA技術實現了一個智能交通燈控制系統。系統以Verilog HDL為設計語言,在FPGA平臺上實現了交通燈的自動控制、數碼管倒計時顯示、緊急情況處理等功能。通過合理的狀態機設計和模塊化編程,系統具有良好的實時性、可靠性和可擴展性,能夠…

技術論文分析分析論文《計算機病毒判定專家系統原理與設計》思考其在游戲中的應用

論文原文的引言主要有兩大部分的內容&#xff1a;介紹計算機病毒&#xff0c;明確本文使用的病毒分類方式&#xff1b;分析傳統計算機病毒檢測存在的弊端。對于計算機病毒的定義&#xff0c;文中給出的定義比較嚴謹&#xff0c;我自己查了一下現在百度百科的定義&#xff0c;兩…

《Unity項目實戰:動態加載引發的顯存危機全鏈路排查與重構實踐》

從動態光影那流光溢彩、仿佛賦予虛擬世界真實質感的絢麗效果—這得益于Unity引擎強大的HDRP管線對光照路徑的精準模擬,到物理引擎驅動的物體碰撞精準到毫厘的物理反饋—依托Unity Physics模塊對剛體動力學的毫秒級計算,再到能夠依據不同設備性能自動適配的畫質表現—通過Unit…

智慧水庫綜合管理系統平臺御控物聯網解決方案

一、行業背景與痛點分析水庫作為防洪、灌溉、供水、發電及生態保護的核心基礎設施&#xff0c;其管理效率直接關系到區域水資源安全與可持續發展。然而&#xff0c;傳統水庫管理模式存在四大核心痛點&#xff1a;數據孤島嚴重&#xff1a;水位、雨量、水質、設備狀態等數據分散…

使用nvm安裝Node.js18以下報錯解決方案——The system cannot find the file specified.

使用 nvm 安裝 Node.js 18以下 報錯解決方案 在前端開發過程中&#xff0c;常常需要針對不同項目切換 Node.js 版本。nvm&#xff08;Node Version Manager&#xff09;是最常用的工具。但最近在嘗試安裝 Node.js 14 版本時&#xff0c;遇到了奇怪的錯誤。 問題描述 使用 nv…

在Excel和WPS表格中快速復制上一行內容

有的時候我們在Excel和WPS表格中想復制上一行對應單元格、連續區域或整行的內容&#xff0c;只需要在當前行拖動鼠標左鍵選中相關區域&#xff0c;然后按CtrlD鍵即可將上一行對應位置的內容復制過來——需要注意的是&#xff0c;如果當前行有數據&#xff0c;這些數據會直接被覆…

408學習之c語言(遞歸與函數)

今天主要學習了遞歸與函數的相關內容&#xff0c;下面將我今天所學知識與所寫代碼分享給大家 遞歸核心要點 遞歸三要素 基準條件&#xff08;明確終止條件&#xff09; 遞歸調用&#xff08;逐步分解問題&#xff09; 收斂性&#xff08;確保每次遞歸都向基準條件靠近&#xff…

swVBA自學筆記016、Solidworks API Help 幫助文檔的(三大版塊)

目錄1. Namespace (命名空間) 版塊2. Interface (接口) 版塊3. Members (接口成員) 版塊4、總結關系5、如果你感覺上面說的過于簡單&#xff0c;請往下看!6、示例鏈接→SOLIDWORKS API Help 20197、需要注意的是&#xff0c;帶“I”的對象表示&#xff1a;接口1. Namespace (命…

通俗易懂地講解JAVA的BIO、NIO、AIO

理解Java的I/O模型&#xff08;BIO、NIO、AIO&#xff09;對于構建高性能網絡應用至關重要 &#x1f9e0; 通俗理解&#xff1a;快遞站的故事 想象一個快遞站&#xff1a; ? BIO&#xff1a;就像快遞站為每一個包裹都安排一位專員。專員從接到包裹到處理完&#xff08;簽收、…

LabVIEW 泵輪檢測系統

在汽車行業&#xff0c;泵輪作為液力變矩器關鍵部件&#xff0c;其質量檢測極為重要。傳統手工檢測泵輪效率低且誤差大&#xff0c;為此構建基于 LabVIEW 與西門子硬件結合的泵輪檢測系統。 應用場景 聚焦汽車零部件生產車間&#xff0c;對泵輪總成進行出廠前檢測。在液力變矩…