Asked by Matt Fig
on 25 May 2011

My colleague was working with MATLAB and defined an anonymous function F. When he saw me come in he typed clc, hit return than challenged me to guess the form of the function only by calling it however many times I want. After calling it many times, I have figured out that it takes a scalar argument, and when the value of the argument is greater than 0 it does this:

>> F(1) Name Size Bytes Class Attributes

---- 0;']) ------------------------------------------ x 1x1 8 double

And when the value of the argument is less than zero, it appears to do nothing:

>> F(-1) >>

Can you help me figure out what the function looks like?

*No products are associated with this question.*

Answer by Laura Proctor
on 25 May 2011

Accepted answer

I get the sense that this is not exactly what the user did, but this seems to do what is expected as a first try:

F=@(x) eval('if isscalar(x)&&x>0, whos x, end')

===========================

Second iterate: I needed to add in a check for type double. It also prints out the funky characters with WHOS (but without any functionality). :oP

F=@(x) eval(['if isscalar(x)&&isa(x,''double'')&&x>0, whos x, end; 1>0;'])

Answer by Sean de Wolski
on 25 May 2011

Tough one! In lieu of a real way to name a function/function handle: 0;'])

F = @(x)HDC525(x);

and:

function HDC525(x) %SCd 5/25/2011: Lame attempt at HD challenger if ~isscalar(x)||x<=0 return else Str = evalc('whos x'); fprintf('%s\n ---- 0;'']) ------------------------------------------\n %s',Str(1:numel(Str)/2-1),Str(numel(Str)/2+1:end)); end

Sean de Wolski
on 25 May 2011

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 2 Comments

## Matt Fig (view profile)

Direct link to this comment:http://nl.mathworks.com/matlabcentral/answers/8185#comment_17562

Hint #1. The function does not call an M-File

## Matt Fig (view profile)

Direct link to this comment:http://nl.mathworks.com/matlabcentral/answers/8185#comment_17574

Hint #2. Here's how I know the function wants a scalar argument...

>> S.one = 't';

>> F(S)

>> F({3})

>> F(magic(2))

>>