# Functions with 2 variables

2 views (last 30 days)

Show older comments

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"

Thanks in advance

##### 6 Comments

Walter Roberson
on 17 Feb 2021

Walter Roberson
on 19 Feb 2021

### Accepted Answer

Walter Roberson
on 17 Feb 2021

format long g

mat2str(g(-9:.5:9))

function output = g(x)

k = floor(x/4);

rm = x - 4*k;

mask = rm < 2;

output = zeros(size(x));

output(mask) = 4-2*(rm(mask) - 1).^2;

output(~mask) = 2*(rm(~mask) - 3).^2;

end

##### 7 Comments

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.

### More Answers (1)

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

##### 1 Comment

Walter Roberson
on 21 Feb 2021

No, I don't think doing that would help solve the question that the person posted.

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!