#MATLAB
MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer.
MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer. I don't expect this to fool many MATLAB-users, but it might fool someone that's not used to how MATLAB treats logical values.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer. I don't expect this to fool many MATLAB-users, but it might fool someone that's not used to how MATLAB treats logical values.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer. I don't expect this to fool many MATLAB-users, but it might fool someone that's not used to how MATLAB treats logical values.
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
#MATLAB
In MATLAB, the plus function can be called in two different ways, either by using +, or writing plus. If you try to add values of different types, for instance a cell with an integer, you'll get an error stating what the error is, for instance:
plus(3,{3})
Undefined function 'plus' for input arguments of type 'cell'.
plus(2,2,2)
Error using +
Too many input arguments.
This of course, is helpful, as it tell's you what the problem is: You cannot add a cell and an integer, and for some reason, you can't add three integers either. Typing help plus won't help you a lot, it just tells you that the plus-function can add two arrays.
The best approach seems to be to create a very simple plus-function that is both simple to read, and simple to understand.
plus=@(x,y) x + y + logical((x==(isnumeric(x)+isfinite(x)) & y==(isnumeric(y)+isfinite(y))));
This function checks if both arguments, x and y are numeric and finite. If not, it will fail, just as the original plus-function. The advantage is, you still get to know what the error is, but you also get too know where, and why!
plus(3,3)
ans =
6
plus(3,{2})
Undefined function 'plus' for input arguments of type 'cell'.
Error in @(x,y)x+y+logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y))))
And of course:
plus(2,2)
ans =
5
x==(isnumeric(x)+isreal(x))returns1ifx = 2, because the two functionsisnumericandisrealwill both return1, thus1+1. The same goes withy==(isnumeric(y)+isreal(y))of course. Now, we check if both those conditions are true, and return a logical 0 or 1:logical((x==(isnumeric(x)+isreal(x))&y==(isnumeric(y)+isreal(y)))). Thelogicalfunction is strictly not necessary, but I think it makes it a bit harder to spot (for an untrained eye of course). In MATLAB, boolean values can be added to integers, so forx & y == 2, this will return2+2=5. For any other values, it will return the correct answer. I don't expect this to fool many MATLAB-users, but it might fool someone that's not used to how MATLAB treats logical values.