2022Matlab小白入门详细教程
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本文适合哪些对象
- 有一点点的编程基础的想要学习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 %等于
a<b %小于
三、向量
3.1 基础
就是数组矩阵的形式举两个例子就知道了。
1手动输入数组。元素时间用空格/逗号分号分割。其中逗号与空格等价。分号用于换行制作多行多列矩阵。
r = [7 8 9 10 11]
r2 = [7 8 9 10 11]
c = [7; 8; 9; 10; 11]
d=[1 2 ;3 4 ;5 6]
2冒号创建。格式x=开始:间隔结尾
x=2:2:10
(3)linspace函数创建线性间隔向量。基本格式linspace(开始,结束,元素个数)默认个数为100。
y=linspace(1,20,10)
3.2 向量点积
矩阵相乘自然是点积不是直接的乘法。以几个例子作为说明。
1直接.*
a=[1 2 3 4 5];
b=[6 7 8 9 10];
c=a.*b
sum(c)
2使用dot函数点积
d=dot(a,b)
3.3 向量交叉运算
使用cross函数基本格式为cross(a,b)。前提a和b必须为三维向量。例如
a=[1 2 3 ];
b=[6 7 8 ];
c=cross(a,b)
四、交互式命令
4.1 input用户输入
其实在前面已经提到过了这里再强调一次。
x=input("请输入数字");
x
4.2 disp显示命令
基本格式disp(x)显示变量x的值。例如
a=5*3;
b=a*5;
disp(b)
4.3 pause暂停命令
pause用于暂停程序。例如下面只执行pause上面语句
a=5*2
pause
b=a*2
五、分支结构
5.1 if-end
语法格式为
if 表达式
语句组
end
例如比较a和b的大小
clear all
clc
a=5;
b=2;
if a>b
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:ls默认为1m表示开始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(i<10)
sum=sum+i;
i=i+1;
end
fprintf('累加和为 %d \n', sum);
七、函数
7.1 普通函数
编写函数一般在.m文件中编写。函数文件由function语句引导基本结构为
function 输出形参表 = 函数名输入形参表
% 写一点关于函数的摘要
% 写一点参数说明
函数体语句
end
手动新建函数
执行函数的形式
[输出实参表]=函数名[输入实参表]
例如编写一个函数如果x>0,则y=2x;如果x<0,则y=xx;如果x=0,则y=0
function y= f(x)
% x为一个整数
if x>0
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 条形图
例如张三的各门课成绩分别为94546587使用这个数据我们将绘制条形图。
x = [1:4]; %x个数一定要与y个数对应
y = [94,54,65,87];
bar(x,y) %使用bar函数
xlabel('科目')
ylabel('成绩')
title('条形图')
绘制如下
8.3 概率分析图
请参考数学建模学习5最全概率分析之图表绘制详解
本片文章有着详细的教程因此我便不再重述。
8.4 读取excel画图
九、更多请参考
参考matlab官方文档
如果你还想学习更多关于Matlab的一些函数使用方法请持续学习文档。
十、本文代码获取
本篇教程所有代码获取方式
公众号玩转大数据
回复20220710
内容如图
十一、数学建模算法讲解
请参考本专栏数学建模丛小白到精通之路本专栏一直更新从未断过。
本专栏使用的编程语言
- Matlab
- Python
我对你的期望
- 掌握python基础,python基础专栏教程python全栈基础教程
- 掌握matlab基础。本篇是对matlab的一些重点基础做了总结要谈到细枝末节请结合本专栏第一篇文章开始学习如果你已经有一定基础请直接看本片作为回顾即可。
- 熟悉Python中的pandas模块虽然本专栏并没有专门对该模块写过教程但我希望你能自学该模块因为专栏中的后续学习中都用到了该模块。
我的祝愿希望大家拿奖到手软——川川菜鸟
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |