Matlab中的矩阵运算
目录 中如何提取矩阵中指定位置的元素?size()函数remat()函数中的矩阵运算中求特征值和特征向量find()函数矩阵与常数的大小判断判断语句
基本知识入门
笔记大部分由观看【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程整理出:
视频链接:
基本的小常识 基础知识 在每一行的语句后面加上分号(一定要是英文的),表示不显示运行结果
a = 3;
a = 5
多行注释:选中要注释的语句,快捷键Ctrl+R
①取消注释:选中要取消的注释语句, 快捷键Ctrl+T
②clear 可以清除工作区的所有变量
③clc 可以清除命令行窗口的所有文本,让屏幕变得干净。
所以很多代码开头都有clear;clc
分号也用于区分行,这两条一起使用,起到初始化的作用,防止之前的结果对脚本文件(后缀名是.m)产生干扰
输出和输入函数(disp和input)
% 一般我们会将输入的数、向量、矩阵、字符串等赋给一个变量,这里我们赋给A
A = input('请输入A:');
B = input('请输入B:')
% 注意观察工作区,并体会input后面加分号和不加分号的区别
(str1,str2…,strn)
(‘字符串1’,‘字符串2’)
中间一定要用英文逗号隔开!
[str 1,str 2,…str n]或者[str1 str2 str3 … strn ]
借用向量的表示形式,中间可以用逗号或者空格!
c = 100
num2str(c)
disp(['c的取值为' num2str(c)])
disp(strcat('c的取值为', num2str(c)))
sum函数
如果是向量(无论是行向量还是列向量),都是直接求和
E = [1,2,3]
sum(E)
% E = 6
E = [1;2;3]
sum(E)
% E = 6
如果是矩阵,则需要根据行和列的方向作区分
clc
E = [1,2;3,4;5,6]
%维度 dim = 1表示按照列 dim = 2表示按照行 默认dim = 1
% a=sum(x); %按列求和(得到一个行向量)
a = sum(E)
a = sum(E,1)
% a=sum(x,2); %按行求和(得到一个列向量)
a = sum(E,2)
% a=sum(x(:));%对整个矩阵求和
a = sum(sum(E))
a = sum(E(:))
中如何提取矩阵中指定位置的元素?
取指定行和列的一个元素(输出的是一个值)
A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A
A(2,1)
A(3,2)
取指定的某一行的全部元素(输出的是一个行向量)
clc;A
A(2,:)
A(5,:)
取指定的某一列的全部元素(输出的是一个列向量)
clc;A
A(:,1)
A(:,3)
取指定的某些行的全部元素(输出的是一个矩阵)
clc;A
A([2,5],:) % 只取第二行和第五行(一共2行)
A(2:5,:) % 取第二行到第五行(一共4行)
A(2:2:5,:) % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)
1:3:10
10:-1:1
A(2:end,:) % 取第二行到最后一行
A(2:end-1,:) % 取第二行到倒数第二行
取全部元素(按列拼接的,最终输出的是一个列向量)
clc;A
A(:)
size()函数
size()函数是用来求矩阵A的大小的,他返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数
%中间有分号,是矩阵
A = [1,2,3;4,5,6]
%中间没有分号,是向量
B = [1,2,3,4,5,6]
size(A)
size(B)
remat()函数
B = (A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。
A = [1,2,3;4,5,6]
B = repmat(A,2,1)
B = repmat(A,3,2)
中的矩阵运算
在矩阵的运算中,“”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))
A = [1,2;3,4]
B = [1,0;1,1]
A * B
inv(B) % 求B的逆矩阵
B * inv(B)
A * inv(B)
A / B
中求特征值和特征向量 E= eig(A):求矩阵A的全部特征值,构成向量E[V,D] = eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量) find()函数
它可以用来返回向量或矩阵中不为0的元素的索引。
X = [1 0 4 -3 0 0 0 8 6]
ind = find(X)
ind = find(X,2)
X = [1 -3 0;0 0 8;4 0 6]
ind = find(X)
%这是因为Matlab在储存矩阵的时候,是一列一科进行储存的。
%用两个变量接收
[r,c] = find(X)
[r,c] = find(X,1) %只找第一个非0元素
矩阵与常数的大小判断
X = [1 -3 0;0 0 8;4 0 6]
%返回的是相同大小的逻辑数组
X > 0
X == 4
判断语句
的判断语句,if所在的行不需要冒号,语句的最后一定要用end结尾;中间语句要注意缩进。
a = input
if a >= 85 disp('成绩优秀')
elseif a >= 60 disp('成绩合格')
elsedisp('成绩挂科')
end