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

75 ビュー (過去 30 日間)
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)
I'll appreciate your response. Thanks.
  5 件のコメント
Parth Sanghavi
Parth Sanghavi 2020 年 7 月 20 日
can you tel me why did we use "Acorners" in the above code
Jonathan Deepak
Jonathan Deepak 2020 年 10 月 1 日
編集済み: DGM 2023 年 2 月 12 日
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

サインインしてコメントする。

採用された回答

Matt J
Matt J 2019 年 2 月 7 日
編集済み: Matt J 2019 年 2 月 7 日
Maybe this is what you really want:
function Acorners = corners(A)
Acorners=A([1,end],[1,end]);
end
  7 件のコメント
ANSHUMAN SARTHAK MEHER
ANSHUMAN SARTHAK MEHER 2020 年 9 月 19 日
Acorners=A([1,end],[1,end]); how this helped us? can you please make me understand
Matt J
Matt J 2020 年 9 月 19 日
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

サインインしてコメントする。

その他の回答 (5 件)

mayank ghugretkar
mayank ghugretkar 2019 年 6 月 3 日
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 件のコメント
ilker melik
ilker melik 2020 年 5 月 2 日
it gives 4x5 matrix. each element of the matrix take values up to 100.
vaibhav jadhav
vaibhav jadhav 2020 年 6 月 7 日
its a simpler and easy way to do it

サインインしてコメントする。


Matt J
Matt J 2019 年 2 月 6 日
編集済み: Matt J 2019 年 2 月 6 日
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 件のコメント
Jos (10584)
Jos (10584) 2019 年 2 月 7 日
編集済み: Jos (10584) 2019 年 2 月 7 日
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
Amos Agbetile 2019 年 2 月 7 日
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)
any suggestions please?
Thanks.

サインインしてコメントする。


TADA
TADA 2019 年 2 月 6 日
編集済み: TADA 2019 年 2 月 6 日
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

harish kolla
harish kolla 2019 年 6 月 16 日
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 件のコメント
ilker melik
ilker melik 2020 年 5 月 3 日
編集済み: ilker melik 2020 年 5 月 3 日
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
Stephen23 2020 年 6 月 7 日
"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:

サインインしてコメントする。


nor el houda bouhaddoun
nor el houda bouhaddoun 2020 年 5 月 19 日
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
  1 件のコメント
Stephen23
Stephen23 2020 年 5 月 19 日
@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 ?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeIntroduction to Installation and Licensing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by