MATLAB学习笔记(三)
来源:互联网 发布:无尽之剑3宝石数据修改 编辑:程序博客网 时间:2024/05/01 14:54
MATLAB的矩阵运算
本人今天主要学习的内容是:
1.矩阵运算的基本规则
2.从矩阵中提取数据
3.利用矩阵变量进行数值计算
4.创建和使用特殊矩阵
1.矩阵的定义
1)直接定义矩阵有两种定义方式均可
>> C = [1,2,3;3,4,5;4,5,6]C = 1 2 3 3 4 5 4 5 6>> C = [1,2,33,4,54,5,6]C = 1 2 3 3 4 5 4 5 6
2)如果一行有太多的元素需要跨行去写,则省略号表示本行未完,转入下一行
>> A = [1,2,3,...3,4,5]A = 1 2 3 3 4 5
3)可以用已经定义的矩阵来定义其他矩阵
>> B = [1,2];>> S = [3,B]S = 3 1 2>> T = [30,10,20;S]T = 30 10 20 3 1 2
4)可以通过圆括号加标号来修改矩阵元素的值
>> S(1) = 0S = 0 1 2
5)可以通过圆括号加标号来增加矩阵元素
>> S(4) = 5S = 0 1 2 5>> S(8) = 8S = 0 1 2 5 0 0 0 8
2.冒号的使用
1)可以使用冒号定义等差矩阵,使用两个参数或者三个参数。两个参数的默认步长为1,三个参数的步长为第2个参数
>> H = 1:8H = 1 2 3 4 5 6 7 8>> time = 0.0:0.5:2.0time = 0 0.5000 1.0000 1.5000 2.0000
2)提取数据功能。个人以为类似于Python中的list的切片功能,只不过这里是矩阵而不是数组。
定义矩阵:
>> M = [1,2,3,4,5; 2,3,4,5,6; 3,4,5,6,7]M = 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7
提取第一列:
>> x = M(:,1)x = 1 2 3
提取第四列:
>> y = M(:,4)y = 4 5 6
提取第一行
>> z = M(1,:)z = 1 2 3 4 5
提取第二行和第三行:
>> w = M(2:3,:)w = 2 3 4 5 6 3 4 5 6 7
提取第2行和第3行中第4列和第5列的元素:
>> w = M(2:3,4:5)w = 5 6 6 7
使用M(:)可以把原矩阵转换成一个长的列矢量,注意,原矩阵并没有改变其存储方式,仅仅是表示形式而已:
>> M(:)ans = 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7>> MM = 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7
提取单个元素,既可以用行下标和列下标来提取,也可以直接使用序号来提取。序号是指从M(:)中的第几个元素。如下例中两种方法是等价的
>> M(2,3)ans = 4>> M(8)ans = 4
3.特殊矩阵
1)全零矩阵zeros
>> zeros(3)ans = 0 0 0 0 0 0 0 0 0>> zeros(3,2)ans = 0 0 0 0 0 0>>
2)全1矩阵ones
>> ones(3)ans = 1 1 1 1 1 1 1 1 1>> ones(3,2)ans = 1 1 1 1 1 1>>
【注】全0矩阵和全1矩阵常用作占位矩阵,用于程序的循环结构,这样可以提高运行速度
>> ones(1,5)ans = 1 1 1 1 1>> b = ans * pib = 3.1416 3.1416 3.1416 3.1416 3.1416>> zeros(1,5)ans = 0 0 0 0 0>> b = ans + pib = 3.1416 3.1416 3.1416 3.1416 3.1416>>
3)对角矩阵
用函数diag
可以提取矩阵主对角线上的元素
>> A = [1,2,3;3,4,5;1,2,3]A = 1 2 3 3 4 5 1 2 3>> diag(A)ans = 1 4 3
用diag使用两个参数可以提取非主对角线上的元素,正数代表主对角线上方,负数代表主对角线下方。
>> AA = 1 2 3 3 4 5 1 2 3>> diag(A,1)ans = 2 5>> diag(A,-1)ans = 3 2>>
若输入的是矢量而不是矩阵,则函数diag会把矢量作为对角线元素而生成一个新的矩阵,并将矩阵的其他元素置零
>> B = [1,2,3];>> diag(B)ans = 1 0 0 0 2 0 0 0 3>>
通过定义第二个参数,可以把矢量中的元素定义成矩阵中的任何一个对角线
>> diag(B,1)ans = 0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0
4)魔方矩阵
魔方矩阵时一种很有趣但是没有实际用途的特殊矩阵,在魔方矩阵中,所有的行列已经对角线元素之和均相等
>> A = magic(4)A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1>> sum(A) %按列求和ans = 34 34 34 34>> sum(A') %转置后按列求和ans = 34 34 34 34>> sum(diag(A)) %对角线元素求和ans = 34
>> fliplr(A) %对矩阵的列进行左右对称翻转ans = 13 3 2 16 8 10 11 5 12 6 7 9 1 15 14 4>> sum(diag(A)) %对角线元素的和ans = 34>>
MATLAB中可以产生任何大于2*2的魔方矩阵,魔方矩阵的解不是唯一的,也可能有其他的解。
- Matlab学习笔记(三)
- MATLAB学习笔记(三)
- matlab学习笔记三(11.2)
- MATLAB学习笔记 函数记录(三)
- Matlab学习笔记三:绘图
- MATLAB学习笔记(三):符号计算(积分+导数)
- [Matlab]基础教程学习笔记(三):编辑器和程序调试
- MATLAB入门学习笔记(三) 多项式函数
- matlab学习笔记(三)---图像的代数运算
- Caffe学习笔记(三)——Matlab接口
- Caffe学习笔记(三)——Matlab接口
- 自适应四元数kalman滤波matlab学习笔记(三)
- MATLAB学习笔记三(关于图像处理)
- 《电路计算C++与MATLAB》学习笔记(三)
- 【Matlab学习笔记】(三)matlab的搜索顺序和搜索路径
- MatLab学习笔记(1)
- Matlab学习笔记(一)
- MATLAB学习笔记(一)
- 内核模块遍历进程和任务队列保存到proc文件中
- 12、static与final关键字详解
- 第二周课程管理实践总结
- 二叉查找树及平衡二叉查找树
- 快速排序
- MATLAB学习笔记(三)
- 第三章第39题
- large-scale parallel collaborative filtering for the Netfile Priza
- 黑马程序员---网络编程(一)
- UNIX 目标文件
- 13、设计模式——单例模式
- 1025. 反转链表 (25)
- JAVA 正则表达式截取字符串小例子
- python学习