a = [1, 2, 3]
b = [1 2 3]
在构建矩阵时,其工作原理类似,行之间用分号或新行分隔,即我们有以下等效可能性:
A = [1, 2, 3; 4, 5, 6]
B = [1 2 3; 4 5 6]
C = [1, 2, 3
4, 5, 6]
D = [1 2 3
4 5 6]
现在来看你的例子:你的数组如下:
[y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
第一行包含一个元素
y(2,i)
.然而,第二行被解释为两个元素:
(1-y(1,i)^2)*y(2,i)
和
-y(1,i)
,由于这些零件之间的空间。也就是说,MATLAB认为你正在使用一个空间来分隔数组的两部分,就像
b
在上面它对输入的解释如下:
[y(2,i); (1-y(1,i)^2)*y(2,i), -y(1,i)]
如果将代码粘贴到MATLAB中,就会出现一个错误,抱怨不可能有一个数组,第一行有1个元素,第二行有2个元素:
>> [y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
要解决这个问题,你必须告诉MATLAB,第二行只有一个元素,由减法给出
(1-y(1,i)^2)*y(2,i) -y(1,i)
.以下是一些方法:
output = [y(2,i); (1-y(1,i)^2)*y(2,i) - y(1,i)]; % spaces on both sides of -
output = [y(2,i); (1-y(1,i)^2)*y(2,i)-y(1,i)]; % no spaces around -
output = [y(2,i); ((1-y(1,i)^2)*y(2,i) -y(1,i))]; % parentheses around everything