要开始学Matlab了,不然就完不成任务了
java中有一句话叫作:万物皆对象
在matlab我想到一句话:万物皆矩阵
矩阵就是Java中的数组
不过矩阵要求四四方方,Java中的数组长和宽可以不同长度
一个有意思的矩阵——结构器
听到这个名词,我想到了构造函数#34
结构器有点像对象
具有不同的field属性(成员变量)
一个属性就相当于一个矩阵容器,所以为什么说万物皆矩阵呢,哈哈
不同于普通矩阵,结构器可以携带不同类型的数据(String、基本数据等等)
多维构造器
不同属性的长度不要求一致,不同维度的属性长度也不要求一致
构造重复矩阵的方法——repmat(xxx,xxx,xxx)
此方法可以用于将小矩阵拼接成大矩阵
repmat()有两种重载构造方法
1.repmat(variable,length),得到一个length*length的矩阵
2.repmat(variable,line,column)得到一个line*column的矩阵
下面演示一下方法的使用
repmat([12,34;56,78],2,3)
结果如下:
ans =
12 34 12 34 12 34
56 78 56 78 56 78
12 34 12 34 12 34
56 78 56 78 56 78
构造器的构造方法
构造器有四种构造方法
1.构造1*x的构造器
构造器名称(索引).属性=值
family.name='noble';
family.age=19;
family.sex='boy';
family(2).name='amy';
family(2).age=44;
family(2).sex='girl';
下面得到结果
这种方法太麻烦了
2.分别使用struct()函数构造
构造器名称(索引)=struct(变量名,值,变量名,值,变量名,值…)
family(索引)=struct('name','noble','age',19,'sex','boy')
下面得到结果
family =
name: 'noble'
age: 19
sex: 'boy'
这种方法也太麻烦了,要一个个去初始化
3.使用repmat()函数构造
构造器名称=repmat(strcuct(xxxxxx,xxxxx,xx,x,x),line,column)
familys=repmat(family,2,3)
下面得到结果:
familys =
2x6 struct array with fields:
name
age
sex
这里又和repmat(矩阵)一点不同
如果矩阵a长度为2*3,那么b=repmat(a,2,3),b的长度为4*9
但是一个构造器a的维度位2*3,那么b的维度也为4*9
不是把整个构造器看成是一个单位去repmat,而是把构造器的每一个维度看成是一个单位去repmat
这种方法可以,不过有个缺点,只能创建重复的构造器
4.使用struct()构造多维构造器
family=struct('name',{'noble','amy'},'age',{19,44},'sex',{'boy','girl'})
下面得到结果
family =
1x2 struct array with fields:
name
age
sex
猜想:是否可以用这种方法创建2*3的构造器
这种方法好,又短又能每个维度都初始化到
单位数组
单位数组与构造器有许多相同之处
相比于构造器,单位数组更像是一个Object类的数组(多态)
因为构造器是通过属性来引用的,单位数组是通过索引来引用的
单位数组的构造方法
单位数组有两种构造方法
{}是单位数组的标志
1.麻烦一点的,需要一个个单位去初始化
单位数组名称(索引)={值}
>> cell(1,1)={eye(2)};
>> cell(1,2)={[2,3,4,5;6,7,8,9]};
>> cell(2,1)={'haha'};
>> cell(2,2)={123};
结果如下
celldisp(cell)
cell{1,1} =
1 0
0 1
cell{2,1} =
haha
cell{1,2} =
2 3 4 5
6 7 8 9
cell{2,2} =
123
2.方便的方法
单位数组名称={xxx,xxx,xxx;xxx,xxx,xxx}
cell={eye(1),eye(2),eye(3);eye(4),eye(5),eye(6)}
结果如下
cell =
[ 1] [2x2 double] [3x3 double]
[4x4 double] [5x5 double] [6x6 double]
一种更详尽的输出cell方法
celldisp(单位数组名称)
将矩阵中某一行或某一列删除
比如将cell的第一行删除:
cell(1,:)=[] %[]表示一个空矩阵
几种向量的创建
指定公差的等差数列
1.向量名=(首项,公差,尾项)
最后一项<|尾项-公差|
2.向量名=(首项,尾项)
相当于(首项,1,尾项)
所以尾项不能小于首项,否则返回空矩阵
指定项数的等差数列
linespace(首项,尾项,项数)
指定项数的lg等差数列
logs(a,b,项数)
首项为10^a,尾项为1^b
单下表引用矩阵元素
矩阵在内存中的储存形式并不是方形的,而是以列为优先
现有矩阵a
a =
1 2 3
4 5 6
7 8 9
则a(6)=8,矩阵在内存中的排列方式是先列后行
利用”:”访问矩阵中多个元素
a(1:2,2:3)
ans =
2 3
5 6
a(2:3:9)
ans =
4 5 6 **这里的三个参数都是线性索引!!!**
线性索引《=》矩阵索引
sub2ind()从矩阵索引==》线性索引
sub2ind(size(矩阵名称),line,column)
原理是sub2ind([line,column],line,column)
ind2sub()从线性索引==》矩阵索引
ind2sub(size(矩阵名称),线性索引)
原理同上
稀疏矩阵(sparse matirx)
稀疏矩阵就是将矩阵中的零去掉,这样的话,有的矩阵有很多0,那么用稀疏矩阵就可以节省空间
稀疏矩阵的构造方法sparse()
1.sparse(已有矩阵名称)
2.sparse(i,j,s,m,n)
i:非零值在普通矩阵中的行位置
j:非零值在普通矩阵中的列位置
s:非零值是多少
m:矩阵的行数
n:矩阵的列数
稀疏矩阵《==》普通矩阵
稀疏矩阵==》普通矩阵
full(稀疏矩阵名称)
普通矩阵==》稀疏矩阵
sparse(普通矩阵名称)
刚接触MATLAB的感想:
相对于java
创建变量方便了——不用声明,不用new,不用区分类型
有很多自带的处理方法——randi、randn、randsym、spdiags、spalloc,而且这些方法的名字还都看不懂是什么意思!!!
API文档没有中文版!!help指令也是英文版的!!被虐死了
学习资料不全面,电子书和学习视频都不没有java完善
还有好多数学方法啊,感觉用MATLAB就是跟数学打交道,编程的份量小了好多,搞到我这个刚学到定积分的大一渣渣搞不懂矩阵的秩是什么
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
相关推荐
**矩阵基本知识** 矩阵是线性代数中的核心概念,是一种强大的数学工具,广泛应用于网络设计、电路分析、数据处理和分析,特别是在MATLAB这样的科学计算软件中扮演着基础角色。矩阵是由m行n列的数值构成的矩形阵列,...
在文件“矩阵操作第一部分:矩阵基本知识.pdf”中,以Matlab软件作为工具,对矩阵的基本操作进行了详细的阐述和实例演示。文件内容包含了矩阵的创建、矩阵元素的索引、矩阵运算、特殊矩阵的生成、矩阵分解等方面的...
### 线性代数(矩阵基础知识) #### 矩阵的概念 矩阵是数学中一个重要的概念,可以被看作是由一系列数字排列成矩形数组的形式。这些数字被称为矩阵的元素,而整个矩阵通常用大写字母来表示,如 \( A \)、\( B \) ...
在机器人技术公共选修课程的第二讲中,我们学习了矩阵基础知识。矩阵是数学中用于表示数字或符号排列的一种工具,它在工程、物理、计算机科学等多个领域都有着广泛的应用。下面将详细介绍矩阵的定义、运算、特殊类型...
矩阵论基础知识全的文档涵盖了多个关键概念,这些概念构成了线性代数的基础,对于理解现代科学和技术,特别是计算机科学、工程、数据分析等领域至关重要。 首先,线性空间是矩阵论的基本构造,它是一个集合,其中的...
《矩阵分析理论的基础知识》 矩阵分析理论是数学中的一个重要分支,主要研究矩阵与线性变换的性质。本文将深入探讨几个关键概念:逆变换、线性变换的矩阵表示、不变子空间以及点到子空间的距离与最小二乘法。 首先...
大学高等代数矩阵知识总结 矩阵是高等代数中的一种重要概念,本资源从矩阵的概念、矩阵的运算、矩阵的逆、分块矩阵等几个方面对大学高等代数矩阵知识进行了总结。 一、矩阵的概念 矩阵是由一个数表组成的,通常用...
"矩阵理论知识重点" ...矩阵理论是研究生学习的重要知识领域,本课程旨在为研究生提供矩阵理论的基础知识和应用技术,帮助研究生深刻地理解矩阵理论的基本知识和数学思想,并掌握有关的计算方法及技巧。
综上所述,《矩阵计算的理论与方法》第二版不仅为读者提供了一个坚实的矩阵基础知识框架,还涵盖了矩阵理论中的高级概念和方法,特别是对Jordan标准形定理的阐述,使得该书成为研究矩阵理论和从事相关计算工作的学者...
这些基本概念构成了矩阵理论的基础,通过深入学习和理解,能为后续的科研工作打下坚实的基础。北航的研究生复习资料中可能包含这些概念的详细讲解、例题解析以及历年考试的重点和难点,有助于学生系统地复习和巩固...
一、矩阵基础知识 在讨论 C# 中的矩阵运算之前,我们需要了解一些基本的矩阵概念。矩阵是一种二维数组,它由多行和多列组成。矩阵的元素可以是数字、符号或其他类型的数据。矩阵的运算包括矩阵加法、矩阵乘法、矩阵...
总结来说,离散数学中的矩阵知识是理解和解决许多计算问题的关键工具。通过学习矩阵的加减、标量乘法、乘法以及布尔矩阵的运算,我们能够为后续的图论、编码理论、计算机图形学等领域的学习打下坚实基础。掌握这些...
矩阵的基础知识1 矩阵是计算机数学中一个非常重要的概念,它可以用来描述系统,并解决各种问题。在该章节中,我们将学习矩阵的定义、基本操作、基于矩阵的向量、特殊形态的矩阵、矩阵的四则运算、矩阵的秩和矩阵的...
在IT领域,矩阵运算是一种基础且重要的数学工具,特别是在计算机图形学、机器学习、线性代数和数值分析等子领域。本项目提供了一个用C++实现的矩阵运算库,涵盖了矩阵的基本运算,如加法、减法、乘法以及求逆矩阵。...
MATLAB教学视频MATLAB基础知识及矩阵的创建和操作-MATLAB教学视频:MATLAB基础知识及矩阵的创建和操作.pdf MATLAB教学视频,零基础通用入门类:本期视频时长约120分钟,通过海量的实例,通俗易懂地讲解了MATLAB...
麻省理工学院的矩阵理论课程提供了深入的知识点总结,以下是对这些关键概念的详细阐述: 1. **方程组的几何解释**: 矩阵形式的线性方程组可以用几何方式来理解。例如,二元方程组可以表示为矩阵乘以列向量的形式...
对于那些对统计学或相关学科感兴趣的读者来说,本书提供了全面且统一的知识体系,不仅覆盖了统计学中常用的矩阵代数基础知识,还包括了一些以往只能从较为冷门的资源中获取的重要结果。 #### 二、内容概述 本书...
矩阵代数的这些基础知识是理解和应用多元统计分析、线性变换、微分方程解以及其他许多数学和工程问题的基础。掌握这些概念不仅能够帮助我们更好地理解复杂系统的行为,还能在实际问题中找到简洁的数学模型,进而进行...