Операция возвращает скалярное значение, когда ожидается вектор значений - PullRequest
3 голосов
/ 26 января 2011

Я оцениваю простую функцию:

y = (2*x)/sqrt( 1 + x.^2 );

Где x - это вектор, содержащий около 100 значений.Однако в этом случае MATLAB делает y равным одному скалярному значению.Если я сделаю:

y = 2*x;

, я получу вектор значений в y, как и ожидалось.Если я это сделаю:

y = x.^2;

I также получу вектор значений в y, как и ожидалось.

Почему приведенное выше уравнение y = (2*x)/sqrt( 1 + x.^2 ); дает единственноезначение, а не вектор значений?

1 Ответ

6 голосов
/ 26 января 2011

Операция B/A (с учетом B = 2*x и A = sqrt(1+x.^2)) попытается выполнить матричное правое деление , что для вектора строки x будет решением в смысле наименьших квадратов для система уравнений yA = B, которая дает скалярное значение для y.

Для поэлементного деления массива вместо этого выполнить операцию B./A (обратите внимание на .).

...