matlab cat()函数:索引超出矩阵维度

时间:2012-10-08 15:16:47

标签: matlab indexing concatenation

我正在尝试连接1->(a-1)+(a + 1) - > n中的数字数组。

我正在使用猫功能

cat(2, 1:a-1, a+1:n)

但我收到了错误

Index exceeds matrix dimensions.

除非我完全弄错,否则我只是想连接两个数字矩阵,所以我不太清楚为什么我会收到这个错误。

我正在努力实现这个目标:

>> a = 3;
>> n = 10;
>> cat(2, 1:a-1, a+1:n)
ans = 
    [1,2,4,5,6,7,8,9,10]

这是错误的做法吗?知道为什么会出现这个错误吗?

3 个答案:

答案 0 :(得分:6)

您的工作区中是否有一个名为cat的变量?

>> cat(2, 2:3, 4:6)                   # this works fine
ans =
     2     3     4     5     6
>> cat = 1:3;                         # introduce the variable 'cat'
>> cat(2, 2:3, 4:6)                   # now it breaks
??? Index exceeds matrix dimensions.

答案 1 :(得分:2)

看起来你在工作区中有一个名为cat的变量。当然,干净的方法是重命名变量:如果你有一个足够新版本的Matlab(R2012x,我认为),你可以在它被分配的第一行中替换cat(选择要查看的变量)窗口右侧的灰色刻度,指示变量在函数中出现的位置),并使用shift+enter替换所有出现的位置。或者你可以使用查找/替换所有功能(确保你只替换单词,而不是子串)。

如果您无法替换现有变量名称,则可以在第一维和/或第二维上使用方括号进行连接:

cat(2,a,b)

相当于

[a,b]

答案 2 :(得分:2)

为了完整起见,您尝试完成的连接也可以这样实现:

R = 1:n;
R = R(R ~= a)

我个人认为这看起来比

更清晰
R = [1:a-1 a+1:n]

但这是个人的;我总是对1:a-1>5((1:a)-1)>5(1:(a-1))>5(1:a)-(1>5)或......)之类的内容感到有些困惑。我只需要思考一下,而我立即理解我的解决方案。