help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Plotting an ELU function with GNU Octave


From: Brett Green
Subject: Re: Plotting an ELU function with GNU Octave
Date: Thu, 4 Feb 2021 14:43:00 -0500


On Thu, Feb 4, 2021 at 2:27 PM Alexandru Munteanu <alexandru.munteanu@e-uvt.ro> wrote:
Hello,

I am trying to create plots for an ELU (Exponential Liniear Unit)
funciton. The function is defined as follows:

function e = elu(z, alpha)
  if z >= 0
    e = z
  else
    e = alpha * ((exp(z)) - 1)
  endif
endfunction

So this is pretty simple so far (alpha is a constant of values 0.01),
and I can test to evaluate it in the interpreter and everything is
working as expected.


However, I want to plot the values of elu(x), where x belongs to the
interval (-5, 5).

function plot_elu
  x = -5:0.01:5
  y = elu(x, 0.01)

  plot(x, y, "linewidth", 5)
  set(gca,"fontsize", 25)
  axis([-6, 6, -1.2, 1.2])
  grid on;
endfunction

This is where the plot goes wrong: it creates the plot as if the values
for elu are all going on the second branch of the if-then-else
statement.

I have attached what the plot looks like. Any help in this direction is appreciated.

--
Alexandru Munteanu


The if statement does not operate elementwise, which is the cause of your problem. The _expression_

y = (x>=0).*x + (x<0).*alpha.*(exp(x)-1)

is essentially an elementwise if-else statement.

Try something more like this.

x = -5:0.01:5
alpha = 0.01
y = (x>=0).*x + (x<0).*alpha.*(exp(x)-1)
plot(x, y, "linewidth", 5)
set(gca,"fontsize", 25)
axis([-6, 6, -1.2, 1.2])
grid on

- Brett Green
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]