【发布时间】:2014-09-23 13:23:13
【问题描述】:
假设在 MATLAB 中定义了以下矩阵:
>> matrix=10:18
matrix =
10 11 12 13 14 15 16 17 18
现在我想用另一个矩阵来索引第一个
>> index=[1,2;3,4]
index =
1 2
3 4
>> matrix(index)
ans =
10 11
12 13
到目前为止一切顺利,答案的大小与矩阵“索引”的大小相匹配。如果我使用行向量作为索引矩阵,则输出也是行向量。但是当我使用列向量作为索引矩阵时,问题就出现了:
>> index=(1:3)'
index =
1
2
3
>> matrix(index)
ans =
10 11 12
如您所见,这里答案的大小与矩阵“索引”的大小不一致。索引矩阵和 ans 矩阵大小的这种不一致使我无法编写一段代码来接受任意大小的索引矩阵。
我想知道其他人是否曾经遇到过这个问题并找到了某种解决方案;换句话说,如何强制 MATLAB 给我一个与任意大小的索引矩阵大小相同的 ans 矩阵?
干杯
解决方案
@Dev-iL 很好地解释了here 为什么这是 Matlab 的行为方式,@Dan 提出了一个通用解决方案here。但是,对于我的代码,有一个更简单的临时解决方法,我已经解释过 here。
【问题讨论】:
-
一种解决方法是使用大小。即
x = size(index); if x(1) > x(2), matrix(index).';虽然我不知道一个好的解决方案