matlab 建模核心用法
(1) 在每一行的语句后面加上分号,表示不显示运行结果。
(2) 多行注释:选中要注释的若干语句,快捷键Ctrl+R。
(3) 取消注释:选中要取消注释的语句,快捷键Ctrl+T。
(4) clear;clc;
clear表示清空工作区的所有变量,clc表示清除命令行窗口的所有文本。clear;clc;
语句一般放在程序的开头,起到初始化的作用。
(5) 输出和输入函数(disp,input
)。
A = input('请输入A:');
当加上分号时,不输出A的值,如果不加分号则输出A的值。(6) matlab合并字符串:
strcat(str_1,str_2,...,str_n)。
[str_1,str_2,……, str_n]
或[str_1 str_2 …… str_n]
。s = {'str_1','str_2' 。。。'str_n'}
(7) 字符串转换函数:num2str(number)
将数字转换为字符串。
(8) 提取矩阵中指定位置的元素
假设矩阵为 A A A
A(i,j)
取指定行和列的一个元素(相当于二维数组,输出的是一个值)。A(i,:)
取指定某一行的全部元素,输出的是一个行向量。A(:,j)
取指定某一列的全部元素,输出的是一个列向量。A(ia:d:ib,:)
取指定的某些行的全部元素 i a , i b i_a,i_b ia,ib 表示起始行和结束行, d d d 代表公差,输出的是一个矩阵。A(:)
取出 A A A 中的所有元素,最后输出一个列向量,因为matlab在底层是以列来存储的。(9) Matlab中矩阵的运算
*
,两个矩阵之间的除法 /
。 A / B A/B A/B 也就相当于 A ∗ i n v ( B ) A*inv(B) A∗inv(B), A A A 与 B B B 的逆相乘。.*
./
.^
注意A^2
↔ \leftrightarrow ↔A*A
(10) 矩阵与常数的大小判断运算
> == <
结果返回一个矩阵,如果对用位置满足条件则为1,否则为0。
(11) 判断语句
if a >= 85
disp('成绩优秀')
elseif a >= 60
disp('成绩合格')
else
disp('成绩挂科')
end
(12) 求程序运行时间
tic
程序代码
toc
最后会返回程序运行的时间。
(1) sum
函数
假设矩阵为 A A A ,向量为 α \alpha α
sum(α)
都表示 α \alpha α 内所有元素的和。sum(sum(A))
或者sum(A(:))
sum(A;1)
与sum(A)
的效果是一样的。sum(A;2)
。(2) size
函数的使用
假设矩阵为 A A A
[r,c]=size(A)
r=size(A,1)
c=size(A,2)
(3) repmat
函数的使用
B=repmat(A,m,n)
将A复制 m × n m\times n m×n 块。(4) Matlab求特征值与特征向量
E=eig(A)
直接返回特征值,构成一个列向量。[V,D]=eig(A)
返回特征值与特征向量。注意 D 构成一个对角矩阵,V 的每一列都是与 D 相应的特征值对应的特征向量。(5) zeros,ones
zeros(m,n)
产生一个 m × n m\times n m×n 维的全0矩阵。ones(m,n)
产生一个 m × n m\times n m×n 维的全1矩阵。(6) find函数的用法
find(A)
,对于矩阵A,按列存储方式返回不为0的元素的位置索引。对于[r,c]=find(A)
返回每一个不为0的元素的行坐标与列坐标。对于[r,c,v]=find(A)
返回行坐标,列坐标和每一个坐标下的值。find(A,k)
↔ \leftrightarrow ↔find(A,k,'first')
find(A,k,'last')
find(A==m)
找到A中前k个等于m的元素的索引find(A==m,k,'first')
找到A中后k个等于m的元素的索引find(A==m,k,'last')
。(7) magic(n)
幻方矩阵。
(8) matlab排序
sort(A,1)
sort(A,2)
sort(A,1,'descend')
,sort(A,2,'descend')
(9) roundn(x,n)
:任意位置四舍五入, x x x表示需要四舍五入的数, n n n表示需要在哪位四舍五入 。0个位,1十位 ,2百位,-1小数点后一位。
(10) nargin
:使用nargin
可以判断函数输入的参数的个数。
function test_nargin(a,b)
switch nargin
case 2
disp('2 input arguments')
case 1
disp('1 input arguments')
otherwise
disp('0 input arguments')
end
(11) mean(X)
:求解平均值。
(12) mod(m,n)
:表示求 m ÷ n m\div n m÷n 的余数。
(13) unique(X)
:剔除一个矩阵或者向量的重复值,并将结果按照从小到大的顺序排列。
(14) cumsum(X)
:返回矩阵 X X X 按列叠加后的一个新矩阵。
(15) diag(A)
:当 A A A 是一个矩阵时,会返回 A A A 的主对角线元素,当 A A A 是一个向量时,会返回一个对角矩阵,向量中的元素依次作为对角线上的元素。
X = diag(v)
v=[1 2 3];
diag(v)
ans =
1 0 0
0 2 0
0 0 3
A=diag(ans)
A=
1
2
3
(16) 重构矩阵 reshape
:一定要注意重构是按照列进行的。
将一个向量重构为矩阵
A = 1:10;
B = reshape(A,[5,2])
B = 5×2
1 6
2 7
3 8
4 9
5 10
将一个矩阵重构
A = magic(4)
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B = reshape(A,[],2)
B = 8×2
16 3
5 10
9 6
4 15
2 13
11 8
7 12
14 1
(1) 将EXCEL表中的文件导入Matlab中,然后可以保存成为.mat文件,下次再使用时用load
导入.mat文件即可。
plot
① ① ① 用法plot(x1,y1,'type',x2,y2,'type')
其中type中填线方式,点方式和颜色。
② ② ② type 的类型
-
实线,:
点线,-.
虚点线,--
虚线。.
圆点,+
加号,*
星号,x
x型,o
小圆圈。y
黄,r
红,g
绿,b
蓝,w
白,k
黑,m
紫,c
青。plot(x,y,'r*');
③ ③ ③ 标注横纵坐标:xlabel('string')
,ylabel('string')
④ ④ ④ 对使用的线或点进行标注
legend(string1,string2,...,stringn,'location','方位')
前面的每一个string代表对对应的线或点的描述,后面的方位表示可以将标注框放在figure的哪个位置。
⑤ ⑤ ⑤ 调整线的宽度
plot(任意, 'linewidth', length)
任意代表生成的任何一个图像,length 表示输入一个数字,表示线的宽度。
⑥ ⑥ ⑥ 画图后不显示坐标轴
set( gca, 'XTick', [], 'YTick', [] )
⑦ ⑦ ⑦ 进行点的填充色、大小和轮廓线的设置
'MarkerFaceColor' - 标记填充颜色
'MarkerSize' - 标记大小
'MarkerEdgeColor' - 标记轮廓颜色
plot(x,y,'o','LineWidth',1,...
'MarkerEdgeColor','k','MarkerFaceColor','r',...
'MarkerSize',10); %表示线宽为 1,填充色为红色,边框为黑色,点的大小为 10
fplot
绘制表达式或函数
① ① ① fplot(f)
在默认区间 [ − 5 , 5 ] [-5,5] [−5,5](对于 x)绘制由函数 $y = f(x) $ 定义的曲线。
② ② ② fplot(f, [xmin xmax] )
在指定区间内绘制函数。
subplot(m,n,p)
:将多个图像画到同一个figure中, m , n m,n m,n 表示将整个figure分成 m × n m\times n m×n个小的作图区域, p p p 表示选取第 p p p 个作图区域,注意subplot
要在plot
前面使用。
hold on
:在同一张图上做出多个线或点。
grid on
:在图上打开网格。
figure
: figure(i)(i=2,3,4)
可以打开新的绘图窗口,保证原来的图像不被覆盖。
text(x,y,string)
:在图上坐标为 ( x , y ) (x,y) (x,y) 处标记上字符串 string。
close(H)
:关闭画好的 figureH。
pause(sec)
: s e c sec sec 填入需要延迟的秒数。
axis([x_0 x_1 y_0 y_1])
:将坐标轴横坐标范围设置为 (x_0,x_1)
,将纵坐标的范围设置为 (y_0,y_1)
。
handle = @(arglist) anonymous_function
其中handle
表示因变量,arglist
表示自变量,anonymous_function
表示写出的函数表达式。z= @(x,y)sin(x+y)
randi([left,right],m,n)
:产生均匀分布的随机整数矩阵,整数的范围为 [ l e f t , r i g h t ] [\bf left,right] [left,right] ,矩阵的大小为 m × n m\times n m×n 。rand(m,n)
:产生均匀分布的随机数矩阵,数的范围为 [ 0 , 1 ] [0,1] [0,1] ,矩阵的大小为 m × n m\times n m×n。a+(b-a)*rand(m,n)
:产生均匀分布的随机数矩阵,数的范围为 [ a , b ] [a,b] [a,b] ,矩阵的大小为 m × n m\times n m×n。normrnd(μ,σ,m,n)
:产生正态分布的随机数矩阵,均值为 μ \mu μ ,标准差为 σ \sigma σ,矩阵的大小为 m × n m \times n m×n。exprnd(num)
:产生均值为 num
的指数分布随机数,也就是 λ = 1 n u m \lambda=\dfrac{1}{num} λ=num1。unifrnd(a,b,m,n)
:可以输出在 [ a , b ] [a,b] [a,b] 之间均匀分布的随机数组成的 m m m 行 n n n 列的矩阵。randperm(num)
:生成 1 ∼ n u m 1\sim num 1∼num 组成的一个随机序列。randsrc(m,n,[alphabet;prob])
:表示按照一定的概率生成一组随机数,其中 alphabet
表示可以产生的数字,prob
表示产生各个数字的概率。