概述
有很多种方法,这里就列举几种,要是各位有什么想要补充,可以留在评论区。
一、生成:
1.直接用方括号写
a = [1,2,3,4,5];
disp(a);
2.用:生成
a = 1:5;
disp(a);
第二个版本(等差数列)
a = 1:2:10;
disp(a);
3.linspace(a,b,n);[a,b] n-1等分,用那个等分点构成这个序列
(一般用于画图)
a = linspace(1,10,3);
disp(a);
4.zeros函数
a = zeros(1,10);
disp(a);
5.eye函数(这个生成的是对角阵,要是不够对角阵,就取这个对角阵的左上角)
a = eye(1,10);
disp(a);
6.ones函数
a = ones(1,10);
disp(a);
7.矩阵拼接生成
a = ones(1,10);
b = zeros(1,10);
disp([a,b]); % 同行拼接
a = ones(1,10);
b = zeros(1,10);
disp([a;b]); % 列拼接
8.空数组
a = []; % 这样就完成了生成
要理解空数组的存在的意义需要一定的计算机的功底,如果没兴趣可以不用去了解的。
不过,我们还是进入我们的应用层面的思考:
我写过篇关于Python中的None等的TrueFalse问题的探讨文章
点击这个可以查看
因此,我对这个做了类似的处理
a = [];
if a
disp('True');
else
disp('False');
end
输出的是False
情况是类似的
二、删除行列
[]还有一个应用就是删除矩阵的部分
a = [1,2,3;4,5,6;7,8,9];
a([1,3],:) = [];
disp(a);
这样就删除了第1,3行(要注意的是,matlab这里比较符合数学人的思维,不像计算机的从0计数)
类似的,删除1,2列
a = [1,2,3;4,5,6;7,8,9];
a(:,[1,2]) = [];
disp(a);
三、提取和展示
提取行
a = [1,2,3;4,5,6;7,8,9];
disp(a(1,:));
a = [1,2,3;4,5,6;7,8,9];
disp(a([1,3],:));
提取列(原理类似)
a = [1,2,3;4,5,6;7,8,9];
disp(a(:,[1,3]));
a = [1,2,3;4,5,6;7,8,9];
disp(a(:,1));
有趣的事
a = [1,2,3;4,5,6;7,8,9];
disp(a(1));
我一开始不太理解这样的操作,我一看,这样的结果居然不是第一行。
很不理解,于是,我开始了探索
我先是很好奇,那我输入4呢?
a = [1,2,3;4,5,6;7,8,9];
disp(a(4));
结果是2
我就在想,是不是会有一个返还的机制,就是走到越界之后,就再往回走一遍。然后我就做了下面的操作。看看是不是也是2
a = [1,2,3;4,5,6;7,8,9];
disp(a(2));
结果是
4
这时候,灵机一动,我想起了矩阵有一个很骚的操作
a = [1,2,3;4,5,6;7,8,9];
disp(a(:));
这样就是将a按列展开
输出结果是
1
4
7
2
5
8
3
6
9
这样看来,就很好理解了
在MATLAB内部,在矩阵上,对于单独的数采用类似操作方法
为了验证我的观点,我做了最好玩的一个实验
a = [1,2,3;4,5,6;7,8,9];
disp(a(10));
这个代码是会报错的
然后输出的错误是
‘索引超出矩阵维度。’
证明了之前的观点。(本人懒得看文档了)
//======回到之前的做那个提取
还有就是提取子串(,子矩阵)
a = [1,2,3;4,5,6;7,8,9];
disp(a([1,3],[1,2]));
这样就是拿对应列和对应行的方法。
要是想要拿部分列呢?比如对应的,我要拿一个规模大于10 * 10 的前10行怎么搞?
哈哈哈,是不是就有人懵了?
其实很有趣
注意到,这种提取的是用了数组的生成的对应项的
所以,我们可以用到前面的数组生成的部分方法做
如:
a = [1,2,3;4,5,6;7,8,9];
disp(a([1:3],[1,2]));
连续的三行,和第1,2列,这样看不出来什么,但是要是规模大的时候呢?比如说是100*100的中间50行和50列组合成的东西呢?
(别告诉我,用不到emm)
a = rand(100,100);
disp(a([25:75],[25:75]));
这样就可以做到了
对了,如果你说这个是会生成51*51也对,毕竟是包括了首末的。
所以,可以根据自己的需求,进行筛选。
生成三角阵
a = rand(3,3);
disp('a = ');
disp(a);
disp('diag(a) = '); % 生成对角元素,作为列
disp(diag(a));
disp('tril(a) = '); % 生成下三角阵
disp(tril(a));
disp('triu(a) = '); % 生成上三角阵
disp(triu(a));
可能有些时候,由于版本不同,显示的情况有点不一样。但大致上是一致的。
最后
以上就是时尚奇异果为你收集整理的matlab数组操作的全部内容,希望文章能够帮你解决matlab数组操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复