2

我正在尝试从 1->(a-1) + (a+1)->n 连接一个数字数组。

我正在使用 cat 功能

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]

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

4

3 回答 3

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.
于 2012-10-08T15:18:55.747 回答
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)或...)之类的东西感到有些困惑。我总是需要思考一秒钟,而我会立即理解我的解决方案。

于 2012-10-08T15:52:16.413 回答
2

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

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

cat(2,a,b)

相当于

[a,b]
于 2012-10-08T15:29:34.557 回答