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

use*_*208 2 indexing matlab concatenation

我试图连接1 - >(a-1)+(a + 1) - > n的数字数组.

我正在使用cat功能

cat(2, 1:a-1, a+1:n)
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误

Index exceeds matrix dimensions.
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Chr*_*lor 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.
Run Code Online (Sandbox Code Playgroud)

  • 从长远来看,最好的办法是更改变量的名称.告诉你的朋友,从长远来看这会更好.让你的变量与内置的Matlab函数共享名称真是一个非常糟糕的主意.如果他们真的不想去改变它,你可以使用`horzcat(1:A-1,A + 1:N)`,而不是`猫(2,1:A-1,A + 1:N)` ,或者只使用Matlab的数组连接语法:`[1:a-1,a + 1:n]`. (2认同)