How can I write this exponential function in matlab?
75 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
rohail khan
el 28 de Mzo. de 2018
Comentada: Walter Roberson
el 23 de Nov. de 2021
hi, please can anyone help me write the following functions in matlab?
0 comentarios
Respuesta aceptada
Walter Roberson
el 28 de Mzo. de 2018
f = @(x) exp(-x.^2/4) .* cos(2*pi*x);
g = @(x) exp(x) .* (x <= 0) + sin(2*pi*x)./max(x,realmin) .* (x>0);
3 comentarios
Walter Roberson
el 31 de Mzo. de 2018
Suppose x is 0 exactly. Then sin(2*pi*x)/x would be 0/0 which would be NaN. The (x>0) after that would multiply the NaN by 0, but NaN times anything is NaN, so you cannot use logical computations like this to mask out a NaN result.
Instead you need to avoid the NaN result. One way of doing that is to detect that you are dividing by 0 and to substitute a different value that is not 0.
The expression max(x,realmin) is equivalent to a vectorized version of
if x <= realmin
temp = realmin;
else
temp = x;
end
realmin is about 1E-308 -- a very small value but not 0. So max(x,realmin) substitutes the positive value realmin for all negative and 0 values, which is enough to prevent division by 0.
Another way of coding it would have been
sin(2*pi*x)./(x + (x == 0)) .* (x>0);
x == 0 would be 0 for all non-zero x and so would not change any x that was not 0. x == 0 would be 1 for x of 0, so for the case of any non-zero value (x+(x==0)) would be the same as the value and for zero exactly it would be 1, thereby preventing division by 0.
Más respuestas (1)
Rajulapati Naveen
el 23 de Nov. de 2021
f = @(x) exp(-x.^2/4) .* cos(2*pi*x); g = @(x) exp(x) .* (x <= 0) + sin(2*pi*x)./max(x,realmin) .* (x>0);
1 comentario
Walter Roberson
el 23 de Nov. de 2021
What difference is there between that and what I posted https://www.mathworks.com/matlabcentral/answers/391290-how-can-i-write-this-exponential-function-in-matlab#answer_312468
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!