mathmatic 求分块矩阵的伪逆_重做第一次作业(矩阵)

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)意思是:

f50a7f9e549304f9c95ddb4a6f70ee7c.png

求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.阅读自学材料(第二章),构造矩阵

7eb548778fa6feb7e3e28d59d8613d1f.png

,并利用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)=[];

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值