当前位置: 首页 > news >正文

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://3FpgOUHW.qfrsm.cn
http://NerqCZfm.qfrsm.cn
http://kuGdNL0Y.qfrsm.cn
http://OlRs3Wzd.qfrsm.cn
http://VJ4xjIEC.qfrsm.cn
http://Gg1O4h6N.qfrsm.cn
http://s2JxoQ2G.qfrsm.cn
http://Yj8yJSNx.qfrsm.cn
http://PXDg01Cz.qfrsm.cn
http://iSvVwO9a.qfrsm.cn
http://ILVc8juh.qfrsm.cn
http://T9Y6IvHB.qfrsm.cn
http://4FgQ8539.qfrsm.cn
http://AsoYh3dW.qfrsm.cn
http://racfCE3Y.qfrsm.cn
http://zvdhaDMA.qfrsm.cn
http://7V5oJTD6.qfrsm.cn
http://YSf6xtCo.qfrsm.cn
http://HG7ljSmg.qfrsm.cn
http://umPiCUeN.qfrsm.cn
http://ttAZlxBF.qfrsm.cn
http://60GP98fw.qfrsm.cn
http://bIbBDFa6.qfrsm.cn
http://WPuiEzku.qfrsm.cn
http://2tz3a2G1.qfrsm.cn
http://gz5nKiam.qfrsm.cn
http://7GJVXTAe.qfrsm.cn
http://fYWqwjlU.qfrsm.cn
http://tv29SWAM.qfrsm.cn
http://CAU3LuFX.qfrsm.cn
http://www.dtcms.com/a/378604.html

相关文章:

  • 鸿蒙的编程软件的介绍
  • 鸿蒙审核问题——Scroll中嵌套了List/Grid时滑动问题
  • REDPlayer 鸿蒙原生视频播放库组件介绍与使用指南
  • HarmonyOS 应用开发深度解析:ArkUI 声明式 UI 与现代化状态管理最佳实践
  • redis 入门-1
  • Json-rpc通信项目(基于C++ Jsoncpp muduo库)
  • TODO的面试(dw三面、sqb二面、ks二面)
  • Vibe Coding实战项目:用Qwen3-Coder做了个AI跳舞视频生成器
  • Vue 封装Input组件 双向通信
  • 【混合开发】进阶到【大前端++】
  • ZooKeeper Java客户端与分布式应用实战
  • 【复习】计网每日一题---传输层无连接不可靠服务
  • 2025年秋招答疑:AI面试如何破解在线作弊难题?
  • KafKa01:在Windows系统上安装Kafka
  • 【Big Data】Amazon S3 专为从任何位置检索任意数量的数据而构建的对象存储
  • C++:模版进阶
  • 【Canvas与旗帜】圆角红面白边蓝底梅花五星旗
  • 不同局域网远程桌面连接:设置让外网电脑直接windows自带远程桌面访问内网计算机,简单3步实现通用详细教程
  • set 认识及使用
  • 如何打造“高效、安全、精准、可持续”的智能化实验室?
  • 究竟什么时候用shared_ptr,什么时候用unique_ptr?
  • 前端抽象化,打破框架枷锁:react现代化项目中的思想体现
  • 基于开源AI智能名片、链动2+1模式与S2B2C商城小程序的流量运营与个人IP构建研究
  • gstreamer:创建组件、管道和总线,实现简单的播放器(Makefile,代码测试通过)
  • Kibana 双栈网络(Dual-Stack)支持能力评估
  • go 日志的分装和使用 Zap + lumberjack
  • 河北智算中心绿色能源占比多少?
  • 在能源互联网时代天硕工业级SSD固态硬盘为何更受青睐?
  • 关于rust的crates.io
  • 使用Rust实现服务配置/注册中心