MATLAB: Write a function to calculate the area of a circle

if statement

Hi everyone,
I need to write a function named areaCircle to calculate the area of a circle with the ff conditions: 1. The function should take one input that is the radius of the circle. 2. The function should work if the input is a scalar, vector, or matrix. 3. The function should return, one output, the same size as the input, that contains the area of a circle for each corresponding element. 4. If a negative radius passed as input, the function should return the value -1 to indicate the error.
I already have my code for the function that satisfies 1 to 3 except for 4. My code is as shown below:
function area = areaCircle(r)
if any(r<0)
A = r % array of random integers
negIndices = A < 0;
B = A; % copy A into new array B
B(negIndices) = -1 % replace the negative values in B with -1
area = B(negIndices);
else
area = pi*r.^2;
end
end
And the test inputs area:
r1 = 2;
area1 = areaCircle(r1)
r2 = [2 5; 0.5 1];
area2 = areaCircle(r2)
r3 = [1 1.5 3 -4];
area3 = areaCircle(r3)
area3 must give an array of values where the last element must be -1 to show an error. It must not be used for the calculation of the area. Thanks in advance!

Best Answer

It isn't obvious from point 4 if it is expected that you just output -1 if any input is negative or -1 in only that location, but since you interpret it as the latter the simplest option would seem to be to use a logical mask as you have done, but you need to just always calculate
area = pi*r.^2;
Then you can just use the mask you created as B to overwrite the areas of any negative inputs with -1.
You can simplify the mask though as simply:
B = r < 0;
then
area( B ) = -1;
In your code you are not calculating any of the areas if any input is < 0. If that is what you want then it would seem that outputting just a scalar -1 would be sensible.