最近在忙着把一个用matlab写的图像处理程序转numpy,由于自己此前对matlab并不熟悉,因此遇到了不少坑,在此总结一下。
一、下标
matlab中下标从1开始,因此转成numpy时下标需要减一
// matlab
dx = diff(s,1,2);
# numpy
dx = np.diff(img, 1, 1)
二、行、列顺序
这个很重要,matlab中列优先的,而numpy是行优先的,所以在用到reshape
这种操作时就要非常注意。
// matlab
a(:);
# numpy
a.flatten('F') # F表示按列优先
np.reshape(a, (-1, 1), 'F')
三、稀疏矩阵
matlab以处理矩阵运算闻名,对稀疏矩阵的处理自然就内置在其库中,而numpy则需要用到scipy库。
// matlab
B = spdiags([-wx, -wy