本文適合哪些對(duì)象?
- 有一點(diǎn)點(diǎn)的編程基礎(chǔ)的,想要學(xué)習(xí)Matlab的小白。
- 正在學(xué)習(xí)Matlab,基礎(chǔ)也沒(méi)搞明白的人。
- 大學(xué)生、研究生想要打數(shù)學(xué)建模相關(guān)競(jìng)賽,需要使用到該語(yǔ)言的人
最后一句:基礎(chǔ)內(nèi)容其實(shí)并不對(duì),不要被外部的一些機(jī)構(gòu),書(shū)籍等誤導(dǎo),請(qǐng)對(duì)本文的所有內(nèi)容完全掌握,內(nèi)容很少,花兩天學(xué)會(huì),后續(xù)請(qǐng)花時(shí)間學(xué)習(xí)算法。
一、基本運(yùn)算
基本加減乘除:
a=5+5 %加法,同理減法
b=2^3 %立方,
c=5*2 %乘法
x = 1; %分號(hào)用于不顯示
y = x + 5
常見(jiàn)變量:
二、變量
2.1 基礎(chǔ)
在上面小節(jié),我們看到的左邊就是字母就叫做變量。很簡(jiǎn)單,這里隨便舉幾個(gè)例子就學(xué)會(huì)了。
(1)計(jì)算=a*2,a=5
clear all %清空
clc % 情況工作區(qū)
a=5;
b=a*2;
b
(2)通過(guò)用戶(hù)輸入來(lái)獲取變量x的值,計(jì)算y=x*3
x=input('請(qǐng)輸入數(shù)字') %input用于接收數(shù)字
y=x*2
(3)使用預(yù)定變量,常見(jiàn)的比如pi,inf,eps,NaN
r=1
L=2* pi *r
S=pi*r*r
2.2 數(shù)據(jù)顯示格式
默認(rèn)情況下,MATLAB 四個(gè)小數(shù)位值顯示數(shù)字。這就是所謂的 short format。如果想更精確,需要使用 format 命令。長(zhǎng)(long ) 命令格式顯示小數(shù)點(diǎn)后16位。
注:一般來(lái)說(shuō),我們不會(huì)太在乎精度,能保留四位數(shù)就可以了,所以這個(gè)不怎么用得到。
通過(guò)以下兩種方式對(duì)比即可理解,注意逗號(hào)分開(kāi):
format long ,pi
format short ,pi
再來(lái)個(gè)例子:
format short %直接聲明為短型
a=3.1415926
2.3 基本關(guān)系運(yùn)算符
常見(jiàn)大于等于小于,如果為真返回1,否則返回0:
a=5
b=2
a>b %大于
a==b %等于
a<b %小于
三、向量
3.1 基礎(chǔ)
就是數(shù)組,矩陣的形式,舉兩個(gè)例子就知道了。
(1)手動(dòng)輸入數(shù)組。元素時(shí)間用空格/逗號(hào),分號(hào)分割。其中逗號(hào)與空格等價(jià)。分號(hào)用于換行,制作多行多列矩陣。
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)冒號(hào)創(chuàng)建。格式:x=開(kāi)始:間隔:結(jié)尾
x=2:2:10
(3)linspace函數(shù)創(chuàng)建線(xiàn)性間隔向量?;靖袷剑簂inspace(開(kāi)始,結(jié)束,元素個(gè)數(shù)),默認(rèn)個(gè)數(shù)為100。
y=linspace(1,20,10)
3.2 向量點(diǎn)積
矩陣相乘,自然是點(diǎn)積,不是直接的乘法。以幾個(gè)例子作為說(shuō)明。
(1)直接.*
a=[1 2 3 4 5];
b=[6 7 8 9 10];
c=a.*b
sum(c)
(2)使用dot函數(shù)點(diǎn)積
d=dot(a,b)
3.3 向量交叉運(yùn)算
使用cross函數(shù),基本格式為:cross(a,b)。前提:a和b必須為三維向量。例如:
a=[1 2 3 ];
b=[6 7 8 ];
c=cross(a,b)
四、交互式命令
4.1 input用戶(hù)輸入
其實(shí)在前面已經(jīng)提到過(guò)了,這里再?gòu)?qiáng)調(diào)一次。
x=input("請(qǐng)輸入數(shù)字:");
x
4.2 disp顯示命令
基本格式:disp(x),顯示變量x的值。例如:
a=5*3;
b=a*5;
disp(b)
4.3 pause暫停命令
pause用于暫停程序。例如下面只執(zhí)行pause上面語(yǔ)句:
a=5*2
pause
b=a*2
五、分支結(jié)構(gòu)
5.1 if-end
語(yǔ)法格式為:
if 表達(dá)式
語(yǔ)句組
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
例如:輸入一個(gè)數(shù)字,判斷奇數(shù)和偶數(shù)
clear all
clc
x=input('請(qǐng)輸入數(shù)字:');
c=rem(x,2) %求余數(shù)的函數(shù)
if c==1
fprintf('x為奇數(shù)')
elseif c==0
fprintf('x為偶數(shù)')
else
fprintf('非數(shù)字')
end
5.4 嵌套if
基本格式:
if 表達(dá)式
語(yǔ)句組
if 表達(dá)式
語(yǔ)句組
end
end
例如:判斷學(xué)號(hào)是否正確,且為偶數(shù)
clear all
clc
y=input('請(qǐng)輸入學(xué)號(hào):')
if y==124
if rem(y,2)==0
fprintf('學(xué)號(hào)正確,且為偶數(shù)')
end
else
fprintf('學(xué)號(hào)錯(cuò)誤')
end
六、循環(huán)結(jié)構(gòu)
6.1 for循環(huán)
基本格式:
for 變量=表達(dá)式
執(zhí)行語(yǔ)句
end
表達(dá)式的通常格式為f:s:l,s默認(rèn)為1,m表示開(kāi)始,l表示結(jié)束。舉個(gè)例子說(shuō)明:遍歷數(shù)字1到10
for a = 1:10
fprintf('值a: %d \n', a);
end
同理可以設(shè)置間隔:
for a = 1:2:10
fprintf('值a: %d \n', a);
end
間隔也可以為負(fù)數(shù):
for a = 1.0: -0.1: 0.0
disp(a)
end
右側(cè)也可以是向量:
for a = [2 3 4 5 6]
disp(a)
end
6.2 while循環(huán)
基本格式:
while 表達(dá)式
語(yǔ)句組
end
舉個(gè)簡(jiǎn)單的例子:遍歷小于10的數(shù)字,并累加求和
i=0;
sum=0;
while(i<10)
sum=sum+i;
i=i+1;
end
fprintf('累加和為: %d \n', sum);
七、函數(shù)
7.1 普通函數(shù)
編寫(xiě)函數(shù)一般在.m文件中編寫(xiě)。函數(shù)文件由function語(yǔ)句引導(dǎo),基本結(jié)構(gòu)為:
function 輸出形參表 = 函數(shù)名(輸入形參表)
% 寫(xiě)一點(diǎn)關(guān)于函數(shù)的摘要
% 寫(xiě)一點(diǎn)參數(shù)說(shuō)明
函數(shù)體語(yǔ)句
end
手動(dòng)新建函數(shù):
執(zhí)行函數(shù)的形式:
[輸出實(shí)參表]=函數(shù)名[輸入實(shí)參表]
例如編寫(xiě)一個(gè)函數(shù):如果x>0,則y=2x;如果x<0,則y=xx;如果x=0,則y=0
function y= f(x)
% x為一個(gè)整數(shù)
if x>0
y=2*x;
elseif x==0
y=0;
else
y=x*x;
end
disp(y)
end
執(zhí)行:
這就是一個(gè)常見(jiàn)的普通函數(shù)。文件名與函數(shù)名保存是一致的。
7.2 匿名函數(shù)
匿名函數(shù)基本格式:
f = @(變量列表)表達(dá)式
舉兩個(gè)例子如下(niming.m):
close all;
clc;
b=@(x)(sin(x)+cos(x)); %創(chuàng)建關(guān)于x的匿名函數(shù)
c=b(pi) %帶入pi
d=@(x,y)(sin(x)+cos(y)) %創(chuàng)建x和y的匿名函數(shù)
e=d(pi,pi) %帶入pi值測(cè)試
7.3 嵌套函數(shù)
簡(jiǎn)單的說(shuō),就是函數(shù)內(nèi)部再寫(xiě)了函數(shù),一般寫(xiě)兩層。建議沒(méi)事不要寫(xiě)嵌套函數(shù),函數(shù)盡量分開(kāi)寫(xiě)。
嵌套函數(shù)基本格式:
function x = A(p1, p2)
...
function y = B(p3)
...
end
...
end
舉個(gè)例子:計(jì)算一元二次方程(qiantao2.m)
function [x1,x2] = qiantao2(a,b,c)
%定義函數(shù)qiantao2計(jì)算一元二次函數(shù)
d=0; %初始化
function disc
d = sqrt(b^2 - 4*a*c); %計(jì)算d
end
disc; %輸出d
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end
測(cè)試案例:qiantao2(1,-2,1)
再來(lái)個(gè)測(cè)試案例:qiantao2(2,4,-4)
八、數(shù)據(jù)可視化
8.1 優(yōu)美散點(diǎn)圖
舉個(gè)例子,有如下的數(shù)據(jù),分別表示為年齡,人體血壓高壓:
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]
最簡(jiǎn)單的方法,比如繪制年齡與高血壓關(guān)系,使用scatter函數(shù):
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)
繪制如下:
想要它好看點(diǎn)呢?繪制為紅色,添加個(gè)r參數(shù)即可,它為red縮寫(xiě):
scatter(x,y1,'r') %填充顏色繪制為紅色
繪制如下:
如果你還想繪制更加好看呢?多彩一點(diǎn)!
c = linspace(1,10,length(x)); %創(chuàng)建向量
scatter(x,y1,[],c)
繪制如下:
再來(lái),填充并標(biāo)記的散點(diǎn)色彩圖:
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y1,sz,c,'filled')
繪制如下:
本節(jié)完整代碼:
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)); %創(chuàng)建向量
scatter(x,y1,[],c)
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y1,sz,c,'filled')
8.2 條形圖
例如張三的各門(mén)課成績(jī)分別為:94,54,65,87,使用這個(gè)數(shù)據(jù),我們將繪制條形圖。
x = [1:4]; %x個(gè)數(shù)一定要與y個(gè)數(shù)對(duì)應(yīng)
y = [94,54,65,87];
bar(x,y) %使用bar函數(shù)
xlabel('科目')
ylabel('成績(jī)')
title('條形圖')
繪制如下:
8.3 概率分析圖
請(qǐng)參考:數(shù)學(xué)建模學(xué)習(xí)(5):最全概率分析之圖表繪制詳解
本片文章有著詳細(xì)的教程,因此我便不再重述。
8.4 讀取excel畫(huà)圖
請(qǐng)參考:數(shù)學(xué)建模學(xué)習(xí)(46):讀取excel數(shù)據(jù)plot畫(huà)圖
九、更多請(qǐng)參考
參考matlab官方文檔:
- plot函數(shù)
- scatter函數(shù)
如果你還想學(xué)習(xí)更多關(guān)于Matlab的一些函數(shù)使用方法,請(qǐng)持續(xù)學(xué)習(xí)文檔。
十、本文代碼獲取
本篇教程所有代碼獲取方式:
公眾號(hào):玩轉(zhuǎn)大數(shù)據(jù)
回復(fù):20220710
內(nèi)容如圖:
十一、數(shù)學(xué)建模算法講解
請(qǐng)參考本專(zhuān)欄:數(shù)學(xué)建模叢小白到精通之路,本專(zhuān)欄一直更新,從未斷過(guò)。
本專(zhuān)欄使用的編程語(yǔ)言:
- Matlab
- Python
我對(duì)你的期望:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-400870.html
- 掌握python基礎(chǔ),python基礎(chǔ)專(zhuān)欄教程:python全棧基礎(chǔ)教程
- 掌握matlab基礎(chǔ)。本篇是對(duì)matlab的一些重點(diǎn)基礎(chǔ)做了總結(jié),要談到細(xì)枝末節(jié),請(qǐng)結(jié)合本專(zhuān)欄第一篇文章開(kāi)始學(xué)習(xí),如果你已經(jīng)有一定基礎(chǔ),請(qǐng)直接看本片作為回顧即可。
- 熟悉Python中的pandas模塊,雖然本專(zhuān)欄并沒(méi)有專(zhuān)門(mén)對(duì)該模塊寫(xiě)過(guò)教程,但我希望你能自學(xué)該模塊,因?yàn)閷?zhuān)欄中的后續(xù)學(xué)習(xí)中都用到了該模塊。
我的祝愿:希望大家拿獎(jiǎng)到手軟!——川川菜鳥(niǎo)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-400870.html
到了這里,關(guān)于2022Matlab小白入門(mén)詳細(xì)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!