matlab debug

来源:互联网 发布:影武者2优化 编辑:程序博客网 时间:2024/06/11 05:42
  • Got 的结果与 expected 的结果有较大差距时,优先调试的是被 matlab 编辑器用黄线标出的部分,仅仅是语法问题,还是存在一些逻辑问题。

1. AB+2A=?A(B+2)

正确地写法:

AB+2A=A(B+2I)

在使用 matlab 进行相关的矩阵运算时,一定要注意这样一个不会报错的逻辑错误,极难调试。

注意一个矩阵和一个矢量相加,就是 矩阵 + 该矢量*全1矩阵;

>> A = randi(3, 2, 2), B = randi(3, 2, 2)A =     2     1     3     3B =     3     2     1     1>> A*B+2*Aans =    11     7    18    15>> A*(B+2)ans =    13    11    24    21                            % A*(B+2*ones(size(A)))>> A*(B+2*eye(size(A)))ans =    11     7    18    15

2. a:b:切片的长度为 b-a+1

注意 matlab 切片是包含左右两个端点的,

>> length(2:7)ans =     6

所以 I(k, k+step) 其实不是 step 的长度,而是 step+1,所以正确的做法应是:

I(k, k+step-1)

3. 输出参数过多

>> A = [1, 2];>> B = [3, 4];>> [d1, d2] = A - B;错误使用  - 输出参数太多。

所以正确的 unpack 顺序是:

>> ds = A - B;>> d1 = ds(1);>> d2 = ds(2);
0 0