(转载)从0开始学matlab—总结

news/2024/2/28 17:48:20

1.编程实例

        下面的例子将向大家介绍如何用 MATLAB 解决问题。

例1 温度转换程序

        问题:
        设计一个 MATLAB 程序,读取一个华氏温度的输入,输出开尔文温度。
        答案:
        华氏温度和开尔文温度的转换关系式可在物理学课本中找到。其关系式为:

        在物理学参考书中举了一些例子,我们可以用来检验我们程序是否正确。例如 

我们设计程序的步骤如下
1. 提示用户键入华氏温度值
2. 读取输入值
3. 通过关系式转换为开氏温度
4. 输出结果,结束
我们将会用 input 函数输入华氏温度,用 fprintf 函数输出结果。
clc
clear% 目的:
% 将一个以华氏度为单位的温度转换为以开尔文为单位的温度。% 定义变量:
% temp_f -- 华氏度温度
% temp_k -- 开尔文温度% 提示用户输入华氏度温度
temp_f=input('请输入华氏度温度:');% 将华氏度温度转换为开尔文温度
temp_k=(5/9)*(temp_f-32)+273.15;% 输出结果
fprintf('%6.2f 华氏温度 = %6.2f 开尔文温度.\n', temp_f,temp_k);
运行结果:
        这个结果和物理教科书的结果相同。在本程序中, 我们重复出带单位的输入值和输出值. 只有带上单位输出才有意义. 按照惯例 , 任何输入变量和输出变量的单位都应打印出来 .
好的编程习惯
当你读取和写入数据时 , 使用适当的单位

例2 负载的最大输出功率

        问题:
        一个内阻 Rs
50Ω ,电动势 V 120V 的电源驱动一个负载 R L 。当 R L 为多少时, R L的功率最大?在这种情况下,功率为多少?画以 R L 为自变量的 R L 功率图。
        答案:
        在本程序中,我们需要改变 R L 的值,然后计算出每一个 R L 的功率。 R L功率的表达式为:

         I代表流经负载的电流。电流可由欧姆定律计算得到。

        这个问题解决的步骤如下
        1. 创建一个数组。这个数组是以 1 为起始项,以 1 步长的等差数组,共 100 项,这是 R L 的取值。
        2. 计算 R L 的电流,
        3. 计算每个 R L 的功率。
        4. 画出 R L 的功率图,以确定 R L 为多少时其功率最大。
        整个程序的代码如下:
clc
clear% 目的:
% 计算并绘制负载电阻作为函数的功率。% 定义变量:
% amps -- 负载电流(安培)
% pl -- 供电给负载的功率(瓦特)
% rl -- 负载电阻(欧姆)
% rs -- 电源内部电阻(欧姆)
% volts -- 电源电压(伏特)% 设定电源电压和内部电阻的值
volts = 120;
rs = 50;% 创建一个负载电阻数组
rl = 1:1:100;% 计算每种电阻下的电流
amps = volts ./ (rs + rl);% 计算每种电阻下负载所消耗的功率
pl = (amps.^2) .* rl;% 绘制功率与负载电阻之间的曲线
plot(rl,pl);
title('功率与负载电阻之间的关系图');
xlabel('负载电阻(欧姆)');
ylabel('功率(瓦特)');
grid on;
        当这个程序运行时,产生的图象如图1 。从这个图我们可知当负载电阻为 50Ω时,功率最大。最大功率为 72W
        注意在本例中,用的是数组运算符.*,.^ ./. 这些运算符将会使数组 amps pl 按元素一一对应计算 .

 例 3 C­14 确定年代

        一个元素的放射性同位素是不稳定元素的一种特殊形态. 在一段时间内 ,它会自然的衰变为另一种元素 . 衰变一种呈指数下降的过程 . 如果 Q 0 是放射性物质在 t =0 时的初始量 ,那么它的质量与变量 t 的关系式为

        其中 λ 代表衰变率 .
        因为放射性元素的衰变是以一定的速率发生的,我们可以把它当作一个时钟来测定的衰变开始的时间。如果我们知道衰变开始时物质的质量和现在放射性元素剩余的质量 ,我们可以根据上面的公式 换算出衰变时间 t ,

        这个公式在科学的许多领域有着广泛的应用 . 例如 , 考古学家可以根据 C14 的衰变周期 ,来确定古生物距今生活的年代 . 现在活着的生物 C14 的含量是不变的 , 所以可以根据古生物 C14的现存量来确定古生物的生存年代 . 已知 C14 的衰变率 λ 0.00012097/ , 所以如果 C14 的剩余量可以通过测量得到 , 那么我们就可以根据公式 2.9 算出这个生物活在多少年之前 .
        编定一个程序, 读取样品中 C14 剩余量的百分比 , 计算样品距今的年代 , 并打印出结果 .
        这个问题解决的步骤如下
        1. 提示用户输入样品中 C14 的剩余量
        2. 读取百分比
        3. 将百分比转化成分数 Q 0/ Q
        4. 利用公式 计算出距今的年数
        5. 输出结果 , 结束 .
        代码如下
clc
clear% 目的:
% 根据样本中剩余原始碳14的百分比计算样本年限% 定义变量:
% age -- 样本年龄(年)
% lamda -- 碳14的衰变常数,单位为1/年 
% percent -- 测量时剩余的碳14含量的百分比 
% ratio  -- 测量时剩余的碳14含量与原始碳14含量之比% 设定碳14的衰变常数
lamda = 0.00012097;% 提示用户输入碳14剩余百分比
percent = input('请输入碳14剩余百分比:\n');% 计算样本中的剩余碳14含量与原始碳14含量之比
ratio = percent / 100; % 转换为分数比例% 计算样本的年龄
age = (-1.0/lamda) * log(ratio); % 单位为年% 展示计算出的样本年龄
string = ['样本年龄为 ' num2str(age) '年。'];
disp(string);
运行结果为:

 2.调试程序

        有一个古老的说法, 人这一生唯一能够确定的东西是死亡和税收 . 我们在这里再增加一项, 无论你编定多大的程序 , 你第一次运行时 , 肯定通不过 ! 程序中的错误我们称之为 BUGS,找出并排出它们 , 我们称之为调试 (debugging). 已知一个程序 , 而无法运行 , 我们怎样调试它呢?在 MATLAB 中有三种类型的错误 . 第一种错误是 语法错误 . 语法错误是 MATLAB 自身的错误,例如拼写错误和标点错误.当编译 M 文件时,maltab 编译器将会找出这些错误.例如,语句
x = ( y + 3 ) / 2 );
有一个语法错误, 因为其括号不平衡. 如果这句存储在 M 文件 test.m 中,当 test 编译时,将会出现下面的信息。
        第二种类型的错误是一种运行时错误。当一个非法的数学运算出现在程序的过程(例如,除以 0) ,将会出现运行时错误。这些错误将会使程序返回 Inf NaN,用来参与下一步的运算。导致这个程序的结果变无效。
        错误的第三种形式是逻辑错误(logical error).逻辑错误是指编译和运行都能通过,而产生了错误的结果。
        在编程过程中出现的最普遍的错误是书写错误。一些书写错误可能产生无效的MATLAB 语句。这些错误产生的语法错误可能会被编译器发现。另一个书写错误发生在变量名的书写上。例如,变量中的字符可能被调换,漏写或错写。这样就会创建一个新的变量,在前面我们已经提到,MATLAB 能够很容易地创造一个新的变量,它不会发现这个错误。、书写错误也能导致逻辑错误。例如,如果变量 vel1 和 vel2 都在程序中代表速度,如果一时疏忽用其中一个替代了另一个,那么你就只能用人工检查代码找出此类错误。有的时侯程序开始时能够执行,但是运行时错误和逻辑错误可能在执行中发生。在这种情况下,可能是输入错误,也可能是逻辑结构错误。找出这类错误的第一步是检查程序的输入数据。既可以去掉输入语句后的分号,也可以加入一个多余的输出语句以证明这个输入值是不是你想要的。如果你已经排除了变量名错误和输入值错误,接着你要处理的是逻辑错误。你应该检测是否有逻辑错误,应当检查每一个赋值语句。
        1.如果一个赋值语句非常的长,把他分成许多小的赋值语句。小的语句易证明。
        2.检查你的赋值语句中括号的放置。在赋值语句中,由于括号导致运算顺序错误是极其常见的错误。如果你对运算顺序仍有疑问,应该多加括号,使之更加清晰。
        3.保证每个变量正确的初始化。
        4.保证函数中用到的单位统一。例如,在三角函数中输入必须是弧度值,而不是角度值。如果你仍然得到的是错误的语句,在更多的位加上输出语句,以检查中间计算。如果你能确定错误的位置,那么你就知道在那里找到问题所在,百分九十五地在这片区域内。如果问题依然存在,那么这时你就应当把你遇到的问题解释给你的同学或老师,让他们给你检查错误。一个人看自己编写的代码找不到错误是非常常见的,而其他的人则可以迅速地找出错误的地方,而这个地方你可能已经看了一次又一次。
好的编程习惯
确保你在编程设计过程:
1. 初始化所有变量
2. 适当应用括号使运算顺序清晰以减少调试的工作量
        在 MATLAB 中有一个专门的调试器,叫做 symbolic debugger. symbolic debugger 允许用户一句一句地执行语句,检测出所有的变量值,它能让你看到所有的中间值,而不用在其中加入输出语句。我们将会在后面介绍 symbolic debugger

http://www.ppmy.cn/news/237841.html

相关文章

国产手机扬眉吐气,终于打击了苹果的嚣张气焰

苹果在9月份、10月份都取得了快速增长,而国产手机品牌持续下滑,但是11月份终于让国产手机捡回了主动权,11月份的数据显示有国产手机品牌的出货量大幅增长,而苹果的出货量却大幅下滑,国产手机成功反击了苹果。 分析机构…

又一家国产手机芯片崛起,已接近华为曾达到的高度

市调机构counterpoint公布的数据显示,2021年Q4紫光展锐的市场份额继续快速增长,已在全球手机芯片市场取得超过一成的市场份额,这与华为当年曾达到的一成多市场份额已较接近,显示出紫光展锐正在担起国产手机芯片的大旗。 counterpo…

Centos8之系统升级

一、centos8系统简介 CentOS 8是一个基于Red Hat Enterprise Linux(RHEL)源代码构建的开源操作系统。它是一款稳定、可靠、安全的服务器操作系统,适合用于企业级应用和服务的部署。CentOS 8采用了最新的Linux内核和软件包管理系统&#xff0c…

微信信息轰炸【简易版】

本版本的微信信息轰炸仅能在电脑端使用: 简单讲解下其中的原理: 在程序中输入我们想要信息轰炸的信息,然后模拟键盘输入。 其实我们就是使用了python的库pynput,模拟输入文字和信息,不多说,上代码 from pynput.keyboard impor…

Python“信息轰炸”

信息轰炸体验过吗?十分钟几百条那种!随着信息技术高速发展,人们都是通过手机等通讯方式进行交流,当然在与朋友的聊天过程中,难免会遇到对方长时间不回自己信息,我们就可以通过“信息轰炸”提醒对方&#xf…

用python twilio模块实现发手机短信的功能!

前排提示:这个模块不是用于对陌生人进行短信轰炸和电话骚扰的,这个模块也没有这个功能,如果是抱着这个心态来的,可以关闭网页了 语言:python Python资源共享群:484031800 步骤一:安装twilio模块 pip install twilio 步骤二:进入官网注册 https://www.twilio.c…

遇到短信轰炸,别人换ip调你的短信接口怎么办

前端开发者很容易暴露自己的请求地址和参数,我们都知道,一个h5页面,按 F12 是可以看到页面的源码的,所以经常很多人会利用这一点恶意调取别人的接口。 我们公司出现了好多次短信接口被大量调用,导致一天发了几万条短信…

自己过不好的生活,干嘛甩锅给手机?

L早上起来梳头发,一把青丝轰然掉落,对着镜子一看,左边头顶居然一块斑秃。 L是一家教育培训行业的夏令营老师,从6月开始她的工作就迎来了高峰期。每天电话、微信接不停,都是家长的报名、询问、担心,各种琐碎…

手机验证短信设计与代码实现(转载)

https://my.oschina.net/wanglihui/blog/321101 总体思路 时效限制: [5-10min]使用次数限制: 1次IP次数限制: 防止恶意刷手机验证码短信手机号限制: 防止短信轰炸跨域请求限制: 进一步限制恶意刷短信验证码验证: 进一步限制恶意刷短信 数据库设计 (CheckCode) ID mobile(手机号…

以技术原理入手从根本上拦截屏蔽解决响一声电话\呼死你\炸你妹\电话轰炸\短信轰炸,远离电话短信骚扰...

现状: 由于目前呼死你(响一声电话/电话轰炸),炸你妹(短信轰炸)骚扰成本极低,恶意者付少量的费就可以去购买电话轰炸机,短信轰炸机对目标实施不间断的骚扰,受害者往往又求助无门,因为找运营商投诉,报警等手段通常都无效,而使用诸如腾讯手机管家、360手机卫士等工具对骚扰…

用python twilio模块实现发手机短信的功能

前排提示:这个模块不是用于对陌生人进行短信轰炸和电话骚扰的,这个模块也没有这个功能,如果是抱着这个心态来的,可以关闭网页了 语言:python 步骤一:安装twilio模块 pip install twilio 步骤二:进入官网注册 https://www.twilio.com 注册完毕之后,会有一个调查,问你准备做什么项…

短信验证码登录需求的坑点整理

随着手机的普及,手机验证码登录需求已经成为一个很常见的需求,但是这么一个看似简单的需求,其实还是有很多坑的。 昨天使用兄弟团队的登录界面,就发现了一些安全问题,在这边整理了一些我的经验和坑点,写下来…

键盘上的整蛊专家,如何防止短信轰炸机

2019独角兽企业重金招聘Python工程师标准>>> "短信轰炸机",是别人通过爬虫或者其他抓取手段在网路上收集那些公司平台短信业务接口的一个集成程序,可能只需要输入一个手机号,对方一整天都会收到各大平台的注册或提醒短信,就是手机在那里响个不停。…

漫谈国内智能手机市场现状

本文纯属一时兴起,想到哪儿写到哪儿,本人文笔也不咋地,写的也比较随意,如有错误欢迎指正,有啥意见欢迎交流。原创文章,转载注明emouse的技术专栏。 我是一个不折不扣的数码爱好者,对电脑手机这些…

手机验证短信设计与代码实现

本文转自:http://my.oschina.net/wanglihui/blog/321101 总体思路 时效限制: [5-10min]使用次数限制: 1次IP次数限制: 防止恶意刷手机验证码短信手机号限制: 防止短信轰炸跨域请求限制: 进一步限制恶意刷短信验证码验证: 进一步限制恶意刷短信 数据库设计 (CheckCode) ID mobil…

折叠屏手机密集轰炸,有人狂热有人Diss,你站谁?...

5G折叠屏元年,手机大战开启。2019年,MWC成了折叠屏密集发布之地,比如2月20日三星发布Galaxy Fold定价13377元,2月24日华为发布Mate X定价17416元。 价格惊世骇俗。 当朋友圈真正形成刷屏效应之后,我们不禁想了解&…

以技术原理入手从根本上拦截屏蔽解决响一声电话\呼死你\炸你妹\电话轰炸\短信轰炸,远离电话短信骚扰

现状: 由于目前呼死你(响一声电话/电话轰炸),炸你妹(短信轰炸)骚扰成本极低,恶意者付少量的费就可以去购买电话轰炸机,短信轰炸机对目标实施不间断的骚扰,受害者往往又求助无门,因为找运营商投诉,报警等手…

折叠屏手机密集轰炸,有人狂热有人Diss,你站谁?

5G折叠屏元年,手机大战开启。2019年,MWC成了折叠屏密集发布之地,比如2月20日三星发布Galaxy Fold定价13377元,2月24日华为发布Mate X定价17416元。 价格惊世骇俗。 当朋友圈真正形成刷屏效应之后,我们不禁想了解&…

【友尽系列】代码整蛊大盘点:你们要的整人技能拿去—丧心病狂没朋友啊~(Tkinter小游戏)

导语 Hello,大家好呀!我是木木子吖~ 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦——不信你试试! 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利&#…

如何防止短信轰炸

如何防止短信轰炸 转自:http://jingyan.baidu.com/article/22a299b5c7a8af9e19376a87.html 短信轰炸带来的隐患 ①用户无任何操作情况下,莫名收到很多短信验证码,对用户造成严重的骚扰。 ②被短信轰炸过后,平台(APP)发…
最新文章