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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;对泵轮总成进行出厂前检测。在液力变矩…