Matlab的矩阵元素编写注意规范
其实平时一直没有注意这个问题,反而忘记其编写的规范了。
问题是这样的,定义了一个列向量,其中每个元素涉及了计算。写法如下:
f0 = [(x0(1) + 3) * (x0(2)^3 - 7) +18; sin(x0(2) * exp(x0(1)) - 1)];
结果编译时就出现了这个问题:
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
Error in ==> hw5 at 8
f0 = [(x0(1) + 3) * (x0(2)^3 - 7) +18; sin(x0(2) * exp(x0(1)) - 1)];
这就表示矩阵写错了,里面元素的数目与设定不匹配,行列元素写反导致大小与设定不匹配,行(列)中少了元素等。
估计是写C写惯了,习惯在计算符号后面加空格,但在编写Matlab矩阵是是万万不可的。
原因在于,Matlab编写矩阵时,每一行内的元素之间是可以用空格或逗号隔开。在我的向量中,“+18”前写了一个空格,编译器认为这是正18了,
因此我第一行有2个元素,而第二行只有一个,所以出现那样的错误。
虽然错误很弱白啦,不过一方面以后要注意,另一方面是行元素间尽量用逗号隔开,以免造成误会。