# Functions with 2 variables

2 views (last 30 days)
Jens Petit-jean on 17 Feb 2021
Commented: Walter Roberson on 21 Feb 2021
How do you make a function (NOT an anonymous function) from this?
"Als" means "if"
Walter Roberson on 17 Feb 2021
k does not need to be an input for this function. The conditions have to do with x modulo 4: -2 <= mod(x,4) < 0 is the second condition, and 0 <= mod(x,4) < 2 is the first condition.
Walter Roberson on 19 Feb 2021

Walter Roberson on 17 Feb 2021
format long g
mat2str(g(-9:.5:9))
ans = '[0 0.5 2 3.5 4 3.5 2 0.5 0 0.5 2 3.5 4 3.5 2 0.5 0 0.5 2 3.5 4 3.5 2 0.5 0 0.5 2 3.5 4 3.5 2 0.5 0 0.5 2 3.5 4]'
function output = g(x)
k = floor(x/4);
rm = x - 4*k;
output = zeros(size(x));
end
Walter Roberson on 17 Feb 2021
k is an element of integers.
For any given real finite x, there is exactly one integer k such that 4*k-2 <= x < 4*k+2. If you try to use any other k then both range tests will fail.
Once you know the k that makes the above true, then the two different conditions decide between halves, 4*k-2 <= x < 4*k, or 4*k <= x < 4*k+2
I coded in a slightly tricky way for the second condition: you may need some study to figure it out.
I could have coded a different way overall, finding k based on floor((x+2)/4) . If you do that, make sure you get the boundaries right.
Jens Petit-jean on 17 Feb 2021
oooooh thanks I get it now, really appreciate the help!

Asayel Alazmi on 21 Feb 2021
Write an mfile using for loop to output a all numbers from 1 to 4 with an increment of 0.2
Walter Roberson on 21 Feb 2021
No, I don't think doing that would help solve the question that the person posted.