matlab怎么找一个矩阵中相同素并输出位置? 如题,这个问题很常见,但是对于我这种菜鸟来说有点头疼。难点有二,一个是找到相同素,一个是找相同素的位置。使用unique好像只能得到相同素的第一个和最后一个。 例如:在如下图矩阵中,位置为1,2的素是相同的,或者行列号为row,col=1,1和2,1的素是相同的;我想得到结果是找到相同素和对应的所有的索引或者行列号,输出结果格式不限 请各位大神不吝赐教,感激不尽!!!
1. 基本连接符[] 基本连接符:[],就是中括号,可以把两个矩阵进行合并(也称为矩阵连接),若水平方向合并,使用逗号分隔,若垂直方向合并,使用分号分隔; 程序示例如下: a=[1 2;3 4] b=[5 6;7 8] [a,b] %水平连接,返回[1 2 5 6;3 4 7 8] [a;b] %垂直连接,返回[1 2;3 4;5 6;7 8] 注意,合并方向上的行/列数应相同,否则,报错:矩阵大小不一致,这也是初学者常犯之错误。 2.水平连接和垂直连接的函数 水平连接horzcat 垂直连接vertcat 程序示例如下: a=[1 2;3 4] b=[5 6;7 8] horzcat(a,b) %水平连接,结果与上面相同 vertcat(a,b) %垂直连接,结果与上面相同 3.平铺复制的函数 平铺复制repmat 程序示例如下: a=[1 2;3 4] repmat(a,1,3) %把矩阵a看作一个整体,平铺复制成1*3的阵列 repmat(a,3,3) %平铺复制成3*3的阵列 4.矩阵素的提取 最实用、直接的方法就是使用矩阵索引进行素的提取,矩阵索引的用法在我的另一篇文章中有详细讲述; 5.提取矩阵对角线素 函数:diag 程序示例如下: a=[1 2 3 4 5 6 7 8 9] diag(a) %提取对角线素,返回[1 5 9] b=[1 2 3] diag(b) %输入b为向量,则把b看作对角线素,扩展为方阵,非对角线素默认0 6.提取上(下)三角形素 提取上三角形素triu 提取下三角形素tril 程序示例如下: a=[1 2 3 4 5 6 7 8 9] triu(a) %提取上三角形素 tril(a) %提取下三角形素 tril(a,1) %添加偏移量参数,1表示往右上偏移1个位置,再取下三角形矩阵 tril(a,2) %2表示对角线往右上偏移2个位置,再取下三角形矩阵 tril(a,-1) %-1表示向左下偏移1个位置,再取下三角素 7.素重排 素重排reshape,重排规则:把原矩阵按列优先重排为新矩阵的大小; 程序示例如下: a=[1 2 3 4;5 6 7 8] %创建2*4的矩阵 reshape(a,4,2) %矩阵a重排成4*2的矩阵 reshape(a,3,3) %素数量不一致,报错 8.排序 排序sort 程序示例如下: a=[1 2 3 4;5 6 7 8] sort(a) %矩阵素的列排序:默认升序排列 sort(a,’descend’) %降序排列 9. 翻转 左右翻转fliplr 上下翻转flipud 程序示例如下: a=[1 2 3 4;5 6 7 8] fliplr(a) %矩阵左右翻转 flipud(a) %矩阵上下翻转 10.相关视频 End
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/89440.html