Moritz Sackmann
  • Home
  • Impressum
  • Categories
  • Tags
  • Archives

Triangular function in Matlab or Octave

Today, I needed a periodical triangular function. It should have the same amplitude, phase and period like a sine. Since it seems like Matlab does not have this method included, I wrote the function myself. Here it is:

tri = @(x) abs(mod(x-2*pi/4,2*pi) / (pi) - 1) * 2 - 1;

You can later call the function as tri(x), x being a scalar, vector or matrix. This should work in Matlab and Octave.

Here is a plot showing the triangular function and the sine function: Plot

Short explanation

The mod-function is the key to the periodicity of the function. After \(x > 2\pi\), it starts from 0. So the output of the mod-function is a sawtooth. Inside the mod-function, x is shifted by \(-\pi/2\) to be in phase with the sine.

The result of the mod function is divided by \(\pi\) since the output of the mod lies between \(0\) and \(2\pi\). Shifting that down by one and calculating the absolute value yields us the desired triangular form.

If you want another periodicity, you will have to figure that out yourself. Here is the unshifted function with a period of 1.

tri = @(x) abs(mod(x,1)-0.5)*4-1;

Bonus: Rectangular function

This one is easy. The Code might not be ideal (performance-wise), but it was the first thing I came up with when thinking about the problem:

rect = @(x) ceil(sin(x))*2 - 1;


Published

Sep 21, 2016

Category

Computer

Tags

  • Computer 8
  • Matlab 1
  • Octave 1
  • Powered by Pelican. Theme: Elegant by Talha Mansoor