Error using sum function in function handle

2 visualizaciones (últimos 30 días)
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS el 11 de Feb. de 2021
Comentada: DIMITRIS GEORGIADIS el 14 de Feb. de 2021
Hi everyone,
Using the following code, I get a matrix dimension error. This is caused only shen using sum inside the function.
% Data
y = [0.85 0.90]'; % Measurements array m x 1
m = length(y);
% Function
L = @(m_x,s_x) (1./s_x.^m).*exp(-0.5.*sum(((y - m_x)./s_x).^2));
% Visualization:
figure
fcontour(L,[0.6 1.4 0.05 0.15])
If I write the function analytically there is no problem.
L = @(m_x,s_x) (1./s_x.^m).*exp(-0.5.*(((y(1) - m_x)./s_x).^2 + ((y(2) - m_x)./s_x).^2));
Can anyone help me solve this issue?
  7 comentarios
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS el 11 de Feb. de 2021
Thank you for your time. I may try a different path
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS el 14 de Feb. de 2021
Turning the function L first to a symbolic expression and then using the "matlabFunction" command fixes the problem.
% Data
y = [0.85 0.90]'; % Measurements array m x 1
m = length(y);
% Function
syms m_x s_x
L = (1./s_x.^m).*exp(-0.5.*sum(((y - m_x)./s_x).^2));
g = matlabFunction(L)
% Visualization:
figure
fcontour(g,[0.6 1.4 0.05 0.15])

Iniciar sesión para comentar.

Respuestas (1)

Steven Lord
Steven Lord el 11 de Feb. de 2021
I suspect you have a variable named sum in your workspace when the anonymous function is created. If I'm correct the use of the identifier sum in L will be interpreted as an attempt to index into that variable not as a call to the sum function. Rename that variable.
  1 comentario
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS el 11 de Feb. de 2021
Thank you for your answer but this is not the case. I have not a variable named sum. The beginning of the code is exactly as stated above.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by