2022Matlab小白入门详细教程
本文适合哪些对象?
- 有一点点的编程基础的,想要学习Matlab的小白。
- 正在学习Matlab,基础也没搞明白的人。
- 大学生、研究生想要打数学建模相关竞赛,需要使用到该语言的人
最后一句:基础内容其实并不对,不要被外部的一些机构,书籍等误导,请对本文的所有内容完全掌握,内容很少,花两天学会,后续请花时间学习算法。
一、基本运算
基本加减乘除:
a=5+5 %加法,同理减法 b=2^3 %立方, c=5*2 %乘法 x = 1; %分号用于不显示 y = x + 5
常见变量:
二、变量
2.1 基础
在上面小节,我们看到的左边就是字母就叫做变量。很简单,这里随便举几个例子就学会了。
(1)计算=a*2,a=5
clear all %清空 clc % 情况工作区 a=5; b=a*2; b
(2)通过用户输入来获取变量x的值,计算y=x*3
x=input('请输入数字') %input用于接收数字 y=x*2
(3)使用预定变量,常见的比如pi,inf,eps,NaN
r=1 L=2* pi *r S=pi*r*r
2.2 数据显示格式
默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format。如果想更精确,需要使用 format 命令。长(long ) 命令格式显示小数点后16位。
注:一般来说,我们不会太在乎精度,能保留四位数就可以了,所以这个不怎么用得到。
通过以下两种方式对比即可理解,注意逗号分开:
format long ,pi format short ,pi
再来个例子:
format short %直接声明为短型 a=3.1415926
2.3 基本关系运算符
常见大于等于小于,如果为真返回1,否则返回0:
a=5 b=2 a>b %大于 a==b %等于 ab fprintf("a大于b") end
5.2 if-else-end
例如:
clear all clc a=5; b=2; if a>b fprintf("a大于b") else fprintf("a不大于b") end
5.3 if-elif-end
例如:输入一个数字,判断奇数和偶数
clear all clc x=input('请输入数字:'); c=rem(x,2) %求余数的函数 if c==1 fprintf('x为奇数') elseif c==0 fprintf('x为偶数') else fprintf('非数字') end
5.4 嵌套if
基本格式:
if 表达式 语句组 if 表达式 语句组 end end
例如:判断学号是否正确,且为偶数
clear all clc y=input('请输入学号:') if y==124 if rem(y,2)==0 fprintf('学号正确,且为偶数') end else fprintf('学号错误') end
六、循环结构
6.1 for循环
基本格式:
for 变量=表达式 执行语句 end
表达式的通常格式为f:s:l,s默认为1,m表示开始,l表示结束。举个例子说明:遍历数字1到10
for a = 1:10 fprintf('值a: %d \n', a); end
同理可以设置间隔:
for a = 1:2:10 fprintf('值a: %d \n', a); end
间隔也可以为负数:
for a = 1.0: -0.1: 0.0 disp(a) end
右侧也可以是向量:
for a = [2 3 4 5 6] disp(a) end
6.2 while循环
基本格式:
while 表达式 语句组 end
举个简单的例子:遍历小于10的数字,并累加求和
i=0; sum=0; while(i0,则y=2x;如果x0 y=2*x; elseif x==0 y=0; else y=x*x; end disp(y) end
执行:
这就是一个常见的普通函数。文件名与函数名保存是一致的。
7.2 匿名函数
匿名函数基本格式:
f = @(变量列表)表达式
举两个例子如下(niming.m):
close all; clc; b=@(x)(sin(x)+cos(x)); %创建关于x的匿名函数 c=b(pi) %带入pi d=@(x,y)(sin(x)+cos(y)) %创建x和y的匿名函数 e=d(pi,pi) %带入pi值测试
7.3 嵌套函数
简单的说,就是函数内部再写了函数,一般写两层。建议没事不要写嵌套函数,函数尽量分开写。
嵌套函数基本格式:
function x = A(p1, p2) ... function y = B(p3) ... end ... end
举个例子:计算一元二次方程(qiantao2.m)
function [x1,x2] = qiantao2(a,b,c) %定义函数qiantao2计算一元二次函数 d=0; %初始化 function disc d = sqrt(b^2 - 4*a*c); %计算d end disc; %输出d x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end
测试案例:qiantao2(1,-2,1)
再来个测试案例:qiantao2(2,4,-4)
八、数据可视化
8.1 优美散点图
举个例子,有如下的数据,分别表示为年龄,人体血压高压:
x=[75;78;51;82;77;88;41;78;78;61;71;74;62;81;75;64;80;72;51;80;56;73] y1=[208;146;168;149;208;102;130;155;163;154;145;147;143;161;145;120;153;158;123;163;177;148]
最简单的方法,比如绘制年龄与高血压关系,使用scatter函数:
scatter(x,y1) %直接绘制
完整为:
x=[75;78;51;82;77;88;41;78;78;61;71;74;62;81;75;64;80;72;51;80;56;73]; y1=[208;146;168;149;208;102;130;155;163;154;145;147;143;161;145;120;153;158;123;163;177;148]; scatter(x,y1)
绘制如下:
想要它好看点呢?绘制为红色,添加个r参数即可,它为red缩写:
scatter(x,y1,'r') %填充颜色绘制为红色
绘制如下:
如果你还想绘制更加好看呢?多彩一点!
c = linspace(1,10,length(x)); %创建向量 scatter(x,y1,[],c)
绘制如下:
再来,填充并标记的散点色彩图:
sz = 25; c = linspace(1,10,length(x)); scatter(x,y1,sz,c,'filled')
绘制如下:
本节完整代码:
x=[75;78;51;82;77;88;41;78;78;61;71;74;62;81;75;64;80;72;51;80;56;73]; y1=[208;146;168;149;208;102;130;155;163;154;145;147;143;161;145;120;153;158;123;163;177;148]; scatter(x,y1) scatter(x,y1,'r') %填充颜色绘制为红色 c = linspace(1,10,length(x)); %创建向量 scatter(x,y1,[],c) sz = 25; c = linspace(1,10,length(x)); scatter(x,y1,sz,c,'filled')
8.2 条形图
例如张三的各门课成绩分别为:94,54,65,87,使用这个数据,我们将绘制条形图。
x = [1:4]; %x个数一定要与y个数对应 y = [94,54,65,87]; bar(x,y) %使用bar函数 xlabel('科目') ylabel('成绩') title('条形图')
绘制如下:
8.3 概率分析图
请参考:数学建模学习(5):最全概率分析之图表绘制详解
本片文章有着详细的教程,因此我便不再重述。
8.4 读取excel画图
请参考:数学建模学习(46):读取excel数据plot画图
九、更多请参考
参考matlab官方文档:
- plot函数
- scatter函数
如果你还想学习更多关于Matlab的一些函数使用方法,请持续学习文档。
十、本文代码获取
本篇教程所有代码获取方式:
公众号:玩转大数据 回复:20220710
内容如图:
十一、数学建模算法讲解
请参考本专栏:数学建模丛小白到精通之路,本专栏一直更新,从未断过。
本专栏使用的编程语言:
- Matlab
- Python
我对你的期望:
- 掌握python基础,python基础专栏教程:python全栈基础教程
- 掌握matlab基础。本篇是对matlab的一些重点基础做了总结,要谈到细枝末节,请结合本专栏第一篇文章开始学习,如果你已经有一定基础,请直接看本片作为回顾即可。
- 熟悉Python中的pandas模块,虽然本专栏并没有专门对该模块写过教程,但我希望你能自学该模块,因为专栏中的后续学习中都用到了该模块。
我的祝愿:希望大家拿奖到手软!——川川菜鸟