doc 函数名 输进命令行窗口
可以查看官方帮助,但是是英文的……得搭配翻译软件
Clc clear每次写程序前
一个是擦黑板(清空命令行窗口)一个是清除所有变量
clf
画图前,用于清除所有图片
什么时候用function,什么时候不用呢?
“你用的各种matlab函数实际上都是一个个m文件构成的 只不过是别人写好你拿来用 如果你想使用的功能别人没现成的 你就需要自己构建”
以下用奇奇怪怪的方法记住函数(声明:以记住为目的,并没有仔细深究来路,有补充的话欢迎留在评论区)……我觉得我不应该用百度查这些东西的,应该在官方帮助那里搬运
diag
diagonal斜对角的缩写,这个函数有两种形式diag(A)和diag(A,K)前者是提取主对角元素然后组成列向量,后者是在这个对角线的基础上上移下移,正为上负为下。如果diag里面是数组的话就是建立以他们为元素的矩阵,数组也可以表示为6:8
表达A矩阵每行都乘上一些东西
diag(6:8)*A
上下三角矩阵tril triu
先记住三角的词根tri 上就是up 下就是low,有类似于diag的用法
转置矩阵
直接来一‘或者transpose() trans这个词根就有转置的意思
逆矩阵inv
inverse的缩写,逆推、倒转的意思
广义逆矩阵(伪逆)pinv
加一个p就是pretend的意思
rank、det看数学科普视频看多了,都知道是啥意思啦
trace矩阵的迹(对角线上元素总和)
trace的英文就是轨迹
特征值、特征向量eig
本征的英文是eigen,特征值的英文是eigenvalue,特征向量是eigenvector
[V,D]=eig(A)意思是:
求A的特征向量构成V的列向量,并求A的全部特征值构成对角矩阵D(这个左右顺序跟学习的时候一样,学习的时候是先学了特征向量,再学特征值)
%[V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V
%V的列是对应的右特征向量,使得 A*V = V*D。
linspace(生成线性间隔向量)
“Generate linearly spaced vector”
y=linspace(x1,x2)返回x1和x2之间100个等距点的行向量。(相当于默认)
y=linspace(x1,x2,n)生成n个点。点之间的间距为(x2-x1)/(n-1)。
linspace类似于冒号运算符“:”,但它可以直接控制点数,并且始终包含端点。“linspace”中的“lin”是指生成线性间隔值。
特殊矩阵(注意一矩阵和单位矩阵)
zeros()
ones()
eye()
reshape 重新塑形
数组是不变的,但装他们的表格重新塑形
示例
A = magic(4)
B = reshape(A,[],2)
(作用对象,新行,新列)(也可以只规定一个,让另一个自动生成)
|| 相当于数学“或”
&& 相当于数学“且”
disp 输出 display
rand( x,y)随机矩阵random
随机赋予100个缺失值
for i=1:100
k=ceil(100*rand(1));
A(i,k)=NaN;
end
(line of thought:每一行随机取一个,赋值为NaN)
删除缺失值,缺失值补充为1
A(isnan(A))=1;
% 删除第99行
A(99,:)=[];
% 删除第99列
A(:,99)=[];
记为把那一块转成空集
附作业和解答:
实验1:MATLAB基础编程
1.阅读自学材料(第二章),构造矩阵
,并利用Matlab自带函数得出以下结果:
①找出矩阵的对角线元素A1,并将A的第一行元素乘以6,第二行乘以7,第三行乘以8,得到A2
②找出矩阵A的上三角矩阵A3及下三角矩阵A4
③求矩阵A的转置A5和逆矩阵A6
④把A看成行列式,求其值A7
⑤求A的秩A8与迹A9
⑥求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量
clc;
clear;
A=[0.1,0.1,10000;0.1,0.1,0.1;0.1,0.1,0.19]
% 找出矩阵的对角线元素 A1,
A1=diag(A)
% 并将A的第一行元素乘以 6
% 第二行乘以7,第三行乘 以8,得到A2
% 6 0 0
% 0 7 0
% 0 0 8(左乘一个初等矩阵)
A2=diag(6:8)*A
%找出矩阵A的上三角矩阵 A3及下三角矩阵A4
A3=triu(A)
A4=tril(A)
% 求矩阵A的转置A5 和逆矩阵A6
A5 =transpose(A)
% A5=A'
A6=inv(A)
% A6_1 = eye(3)/A
A7=det(A)
A8=rank(A)
A9=trace(A)
%[V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V
%V的列是对应的右特征向量,使得 A*V = V*D。
[V,D]=eig(A,'nobalance')
2 用matlab编写一个M函数文件,实现以下功能:
(1) 用linspace生成一个行向量a,该向量内含有1到100对的全体整数;
(2) 初始化一个矩阵B,B为10*10的方阵,Z中全部元素为0;
(3) 将a中的元素每10个作为一行,放入到B中;
(4) 对于处理后的B,筛选出第6行和第10行的全部元素,放在C中;
(5) 在第C的元素中,计算大小在[53,95]之间的元素的和;
clc;clear;
% 用linspace生成一个行向量 a,该向量内含有 1到100对的全体整数
a=linspace(1,100,100);
% 初始化一个矩阵 B,B为10*10的方阵,B中全部元素为0;
b=zeros(10,10);
% 将a中的元素每 10个作为一行,放入到 B中;
b=transpose(reshape(a,10,10));
% 或者使用循环
for i=1:10
for j=1:10
b(i,j)=a(10*(i-1)+j);
end
end
% 对于处理后的 B,
% 筛选出第6行和第10 行的全部元素,放在C中;
c=zeros(2,10);
c(1,:)=b(6,:);
c(2,:)=b(10,:);
% 在第C的元素中,计算大小在[53,95]之间的元素的和;
sum=0;
for k=1:1:2
for l=1:1:10
if c(k,l)>=53&&c(k,l)<=95
sum=sum+c(k,l);
end
end
end
sum
另解:
[row,col]=find(c>=53&c<=95);
sum=0;
for k=1:length(row)
sum=sum+c(row(k),col(k));
end
3 有用的矩阵操作
(1)新建一个100*100随机矩阵A,然后随机在其中赋予100个缺失值NaN;
(2)使用isnan删除缺失值,将缺失值全部补充为1;
(3)删除矩阵中第99行和第99列数据;
clc;clear;
% 新建一个100*100随机矩阵A,
% 然后随机在其中赋予100个缺失值 NaN
A=rand(100,100);
for i=1:100
k=ceil(100*rand(1));
A(i,k)=NaN;
end
% 删除缺失值,缺失值补充为1
A(isnan(A))=1;
% 删除第99行
A(99,:)=[];
% 删除第99列
A(:,99)=[];