# Matlab function to take matrix as input and return elements in its four corners as output

33 visualizzazioni (ultimi 30 giorni)
Amos Agbetile il 6 Feb 2019
Commentato: DGM il 6 Giu 2024 alle 5:12
Hello, good day all, please I'm having difficulties writing a function to take a matrix input, and return the elements in its cour corners as an output.
Here is my code:
function [top_left,top_right,bottom_left,bottom_right] = corners(i,r,c)
A = matrix(i,r,c)
top_left = A(1,1);
top_right = A(1,c);
bottom_left = A(r,1);
bottom_right = A(r,c);
function B = matrix(i,r,c)
ind = i;
row = r;
col = c;
B = randi(ind,row,col);
I keep getting Not enough input arguments.
Error in corners (line 2)
A = matrix(i,r,c)
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Parth Sanghavi il 20 Lug 2020
can you tel me why did we use "Acorners" in the above code
Jonathan Deepak il 1 Ott 2020
Modificato: DGM il 12 Feb 2023
you can also use the function like this
function [a,b,c,d]= corners(l)
a= l(1,1);
b=l(1,end);
c=l(end,1);
d=l(end,end);
end

Accedi per commentare.

### Risposta accettata

Matt J il 7 Feb 2019
Modificato: Matt J il 7 Feb 2019
Maybe this is what you really want:
function Acorners = corners(A)
Acorners=A([1,end],[1,end]);
end
##### 7 CommentiMostra 5 commenti meno recentiNascondi 5 commenti meno recenti
ANSHUMAN SARTHAK MEHER il 19 Set 2020
Acorners=A([1,end],[1,end]); how this helped us? can you please make me understand
Matt J il 19 Set 2020
It gets the corners. Did you try it?
>> A=nan(5); A(:)=1:25
A =
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
>> A([1,end],[1,end])
ans =
1 21
5 25

Accedi per commentare.

### Più risposte (5)

mayank ghugretkar il 3 Giu 2019
function [top_left,top_right,bottom_left,bottom_right] = corners(M)
top_left = M(1,1);
top_right = M(1,end);
bottom_left = M(end,1);
bottom_right = M(end,end);
end
here's the code to call:
A = randi(100,4,5)
[top_left, top_right, bottom_left, bottom_right] = corners(A)
B = [1; 2]
[top_left, top_right, bottom_left, bottom_right] = corners(B)
I think this will be much simpler approch..
##### 3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
ilker melik il 2 Mag 2020
it gives 4x5 matrix. each element of the matrix take values up to 100.
vaibhav jadhav il 7 Giu 2020
its a simpler and easy way to do it

Accedi per commentare.

Matt J il 6 Feb 2019
Modificato: Matt J il 6 Feb 2019
I get no errors of any kind when I run your code, e.g.
[top_left,top_right,bottom_left,bottom_right] =corners(10,10,10)
gives
top_left =
4
top_right =
7
bottom_left =
7
bottom_right =
4
The only reason I can think of is you have a another function called matrix() higher in your path which is hiding the one you really want. Try,
>>which -all matrix
##### 4 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Jos (10584) il 7 Feb 2019
Modificato: Jos (10584) il 7 Feb 2019
Strictly speaking, your function corners does not take a matrix input.
I think you asked to do something like this
function out = corners(M)
% M is the input matrix
out(1) = M(1,1)
% etc
Amos Agbetile il 7 Feb 2019
yes, thanks. I think that's the problem. I'm supposed to use the function to run the following lines of code in the command window:
A = randi(100,4,5)
[top_left, top_right, bottom_left, bottom_right] = corners(A)
A = [1; 2]
[top_left, top_right, bottom_left, bottom_right] = corners(B)
Thanks.

Accedi per commentare.

Modificato: TADA il 6 Feb 2019
I Don't See Any Particular Problem With That Line.
The Problem Is Possibly That You Didn't Send Input Or Enough Input To corners When You Invoked It.
Try Calling Cornenrs From The Command Window With Valid Values, Or When You Run Using the Run Button T The Top Or Using F5, You Can Specify Input At The Run Button Menu
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

harish kolla il 16 Giu 2019
function [top_left,top_right,bottom_left,bottom_right]= corners (A)
top_left= A(1,1)
top_right= A(1,end)
bottom_left=A(end,1)
bottom_right=A(end,end)
end
##### 4 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
ilker melik il 3 Mag 2020
Modificato: ilker melik il 3 Mag 2020
I get this idea of output argument and accesibility. But I defined also top_right, bottom_left and bottom_right as output argument. But why does particularly top_left pops out as an ans instead of other output arguments.
Stephen23 il 7 Giu 2020
"But I defined also top_right, bottom_left and bottom_right as output argument."
You defined them in the function, but you did not use any output arguments when calling the function.
How to call functions (with multiple output arguments) is explained in Steven Lords comment above and also in the introductory tutorials:

Accedi per commentare.

nor el houda bouhaddoun il 19 Mag 2020
please can anybody help me because i don't know where the probleme is :
function [top_left, top_right, bottom_left, bottom_right]= corner(A)
top_left= A(1,1);
top_right= A(1,end);
bottom_left= A(end,1);
bottom_right = A(end, end);
end
and it gives me this:
>> A = randi(100,4,5)
??? Undefined function or method 'randi' for input arguments of type 'double'.
and the m-file is in the current directory
##### 2 CommentiMostra NessunoNascondi Nessuno
Stephen23 il 19 Mag 2020
@nor el houda bouhaddoun: please show us the output of this command:
which randi -all
What MATLAB version are you using?
Is this your own computer and MATLAB installation, or that of your school/university/whatever ?
DGM il 6 Giu 2024 alle 5:12
For sake of curiosity:
randi() was introduced to the base toolbox in R2008b, so for it to be missing in 2020 would be curious.

Accedi per commentare.

### Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by