matlab中一个小错误!谁帮忙解决下

来源:百度知道 编辑:UC知道 时间:2024/05/10 07:59:45
A=rand(3,4)

A =

0.2844 0.9883 0.5155 0.2259
0.4692 0.5828 0.3340 0.5798
0.0648 0.4235 0.4329 0.7604

>> B=A([1,2],:)>0.3

B =

0 1 1 0
1 1 1 1

>> C=A([1,2],B)
??? Index exceeds matrix dimensions.
创建一个4×5键机矩阵,提取第一行和第二行中大于o.3的元素组成的矩阵。这是问题。

B=A([1,2],:)>0.3 作判断是不能得到地址的,只能得到真值表.
你可以这样.
B=A([1,2],:)
C=B(find(B>0.3))

不可以直接用find(A([1 2],:)>0.3))因为它得到的地址不是A的地址,而是新矩阵A([1 2],:)的地址!

当然是错误的了,都不知道你的最后一行语句是什么意思,A([1,2],B)=A(1 2 0 1 1 0;- - 1 1 1 1),-表示没有元素,你自己读一下看看是什么意思啊?A中有这样的元素吗?
如果你是笔误,想表达A的1,2行元素和B矩阵连接起来,可以写成C=[A([1,2],:),B];
还有就是MATLAB的矩阵下标是从1开始的,如果你程序中引用下标有0会报错的

B是两行的,用一行就行了
C=A([1,2],B(1,:))