matlab 在一个矩阵中镶嵌一个矩阵是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:25:57
如果A = [8 22; 14 21] B = [8 19; 31 7].
A(A>10) 会得到[14; 22; 21]
请问为什么会得到一列,而不是一行。因为A>10会得到一个2*2的矩阵[0 1;1 1]
不这个矩阵套入A中为什么会产生这个效果
谢谢

在matlab中,矩阵是按列存储的。

系统先判断8,14,再判断22,21.
成立的依次按列输出,不成立则忽略不输出。

而A>10进行的是逻辑判断,大于10,成立即是1,否则为0.
对于逻辑判断,对于每一个元素都会输出一个结果,
且输出矩阵与输入矩阵同尺寸!

楼主要注意,这里有两种情况:
1.你提的问题里,A>10会得到一个2*2的矩阵。但这个矩阵里的元素不是数,而是逻辑值,0表示false,1表示true。所以你在A中嵌入这个逻辑矩阵,就会根据对应的逻辑值判断是否该取那个元素。

比如A>10得到[0,1;1,1],就知道除了第1个元素不取,其他元素都取,所以 A(A>10)的结果是[14;22;21]。

2.如果嵌入的矩阵不是逻辑矩阵,矩阵上每个元素是数,那么意义就不一样,得到的结果也不同。

例如还是那个矩阵A=[8 22;14 21],
楼主试着运行以下:>>A([0 1;1 1])
运行结果会报错,这是因为这时嵌入的矩阵代表A中元素的位置,而位置不可能是0,所以报错。

>>A([1,1;1,3])

ans =

8 8
8 22

这样就可以了。你自己体会一下上面两种情况的不同之处。