我正在尝试连接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]
这是错误的做法吗?知道为什么会出现这个错误吗?
答案 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)
或......)之类的内容感到有些困惑。我只需要思考一下,而我立即理解我的解决方案。