행 벡터와 열 벡터를 .*로 곱하면 예전엔 오류였다. R2016b부터는 아니다. a = [1 2 3], b = [1; 2; 3]이면 a .* b는 모든 쌍의 곱으로 채운 3×3 행렬이 되고, 경고도 없다.
행이라고 생각한 자리에 열이 들어가 있었다. 예전 동작이었으면 바로 거기서 멈췄을 거다. 새 동작은 행렬을 조용히 sum에 넘겼고, 그건 열 방향으로 더해서 숫자 세 개짜리 행을 돌려줬다. 그럴듯한 숫자였다. 틀린 숫자였다.
의도한 거라면 암묵적 확장은 괜찮다. bsxfun 없이 X - mean(X)로 열마다 중심을 맞추는 건 확실히 낫다. 하지만 규칙이 대칭이라 크기가 1인 차원이면 어디든 늘어나고, 방향이 틀린 벡터만큼 흔한 크기 1 차원도 없다.
그래서 지금은 함수 입구에서 arguments 블록으로 size를 확인하고, 방향을 겉모양 문제로 취급하지 않는다. 귀찮다. 그래도 그래프에서 발견하는 것보단 싸다.