Matlab-入门练习
个人主站:
ghzzz.cn
1、利用基本矩阵产生 3*3
和 15*8
的单位矩阵、全1
矩阵、全0
矩阵、均匀分布随机阵([-1,1]
之间)、正态分布随机阵(均值为1
,方差为4
)
解:
用到的函数:
A=eye(3),生成一个3×3的单位矩阵
A=ones(3),产生3x3全1矩阵
A=zeros(3),产生3x3全0矩阵
A=rand(4,5),生成一个4×5的随机矩阵
A=randn(3),生成一个3x3的正态分布随机阵
%//matlab:
A1=eye(3) % 产生单位矩阵
A2=ones(3) % 产生全1矩阵
A3=zeros(3) % 产生全0矩阵
A4=2*rand(3)-1
% rand--[0,1] >> 2*rand--[0,2] >> 2*rand(3)-1--[0-1,2-1]>> [-1,1]
A5=2*randn(3)+1 % 方差=2^2=4 均值=+1
B1=eye(15,8)
B2=ones(15,8)
B3=zeros(15,8)
B4=2*rand(15,8)-1
B5=2*randn(15,8)+1
2、利用diag等函数产生下列矩阵:
a=[0 0 8;0 -7 5;2 3 0]
b=[2 0 4;0 5 0;7 0 8]
然后利用reshape
函数将它们变换成行向量
用到的函数:
d=diag(A),若A是一个矩阵,则d为取A对角线元素组成的一个向量,如果A为一个向量,则d是一个以向量A为对角线上的元素构成的对角矩阵
B = fliplr(A),将矩阵A的列绕垂直轴进行左右翻转
如果A是一个行向量,fliplr(A)将A中元素的顺序进行翻转。
如果A是一个列向量,fliplr(A)还等于A。
B = reshape(A,...,[],...),指定某维数后,剩余的维数长度值用占位符[]来表示,使得维数的乘积等于prod(size(A))。
解:
a:
%//matlab:
A=diag([8 -7 2]) %产生矩阵。元素位于对角线
B=A+diag([5 3],-1) %产生次对角线矩阵并与A相加
a=fliplr(B) %矩阵翻转
A=reshape(a.',1,[]) %矩阵排成行向量,`a.'对a转置,1 指定一行,[]自动识别数量
b:
%//matlab
s = [2 0 8]
t = [4 5 7]
q = diag(s)
r = diag(t)
w = fliplr(r)
b = q+w
B=reshape(b.',1,[])
3、产生一均匀分布在(-5,5)
之间的随机阵(50*2)
,要求精确到小数点后一位。
用到的函数:
rand 上方介绍过
round (m,1),保留一位小数
%//matlab
B = round(10*rand(50,2)-5,1)
4、编程实现当t∈[-π,π]
,间隔为1°
时求解正弦和余弦值。
t=(-1*pi:pi/180:pi); %区间起点,步长,区间终点
y1=sin(t)
y2=cos(t)
5、利用rand
函数产生(0,1)
间的均匀分布的10*10
随机矩阵A,
然后统计A中大于等于0.6的元素的个数。
用到的函数:
sum(),函数对向量的所有元素进行求和。
%//matlab
A=rand(10)
B = A >= 0.6 %筛选大于等于0.6的元素为1,其余为0
C = sum(B)
count=sum(C)
6、利用randn
函数产生均值为0
,方差为1
的10*10
随机矩阵A,然后统计A中大于-0.5且小于0.5的元素的个数。
%//matlab
A=roundn(10)
B = (A>-0.5)&(A<0.5)
C= sun(sum(B))
8、有一矩阵A,找出矩阵中值大于1
的元素,并将它们重新排列成列向量B。
用到的函数:
find(),返回满足条件的下标
sort(),对一维或二维矩阵进行升序排序,并返回排序后的矩阵;当A为二维矩阵时,对矩阵的每一列分别进行排序。
%//matlab
A=randn(4)+1
B = A(find(A>1))
C=sort(B)