Применить функцию по столбцу с несколькими входами в Matlab - PullRequest
0 голосов
/ 15 января 2019

Применение функции к матрице с использованием нескольких столбцов в качестве аргументов для применения функции с несколькими импутами.

A = [1 2 3];
B = [4 5 6];
C = [7 8 9];

% This is the function I want use,
bsxfun(@(x,y,z) 1/(sqrt(2*pi*z)) * exp((-(x-y).^2)/(2*z)), A, B, C)

Но не работает, работает только с двумя импутами:

bsxfun(@(x,y) x+y, A, B)

Выход ошибки bsxfun:

error: Invalid call to bsxfun.  Correct usage is:

 -- bsxfun (F, A, B)

, что говорит о том, что я не могу сделать это с более чем 2 входами ..

Ожидаемый расчет функции в основном:

[1/(sqrt(2*pi*C1))*exp((-(A1-B1).^2)/(2*C1))
    1/(sqrt(2*pi*C2))*exp((-(A2-B2).^2)/(2*C2))
    1/(sqrt(2*pi*C3))*exp((-(A3-B3).^2)/(2*C3))]

является A1,B1,C1 первым элементом A,B,C, соответственно, при этом N является N числом элементов векторов (с одинаковой длиной)

result = [ 0.079 0.08 0.08 ]

1 Ответ

0 голосов
/ 15 января 2019

Вам не нужно bsxfun здесь. Вам просто нужно правильно определить дескриптор функции.

f =  @(x,y,z) 1./(sqrt(2*pi*z)).*exp((-(x-y).^2)./(2*z));

Теперь ваш ожидаемый результат:

f(A,B,C)
...