Reversible matrix in matlab
이전 댓글 표시
Hey
I need to write a function that the user enters a matrix, and the function returns "1" if the matrix is reversible and "0" if it's not.
I wrote this function-
function x=irr_mat(A)
if A==zeros(sz,'like',p)
x=0;
else
if size(A,1)==size(A,2)
x=1;
else
x=0;
end
end
end
and when I call the function-
A=randi([1,100],4);
irr_mat(A)
I get a note that -
Undefined function 'irr_mat' for input arguments of type 'double'.
Error in Untitled5 (line 3)
irr_mat(A)
can someone help me please?
댓글 수: 7
Walter Roberson
2020년 10월 20일
What filename did you store the code in?
Walter Roberson
2020년 10월 20일
p is not defined in your function by the way.
Noa Yelin
2020년 10월 20일
KSSV
2020년 10월 20일
What do you mean by a matrix is reversible?
Noa Yelin
2020년 10월 20일
KSSV
2020년 10월 20일
What is sz in the function? It will throw error.
Noa Yelin
2020년 10월 20일
답변 (2개)
Walter Roberson
2020년 10월 20일
1 개 추천
You need to take that code for irr_mat and store it in file irr_mat.m
댓글 수: 13
Noa Yelin
2020년 10월 20일
Walter Roberson
2020년 10월 20일
At the MATLAB command line give the command
edit irr_mat
The editor will open. In the page it creates, copy out that function code you posted, and paste it into the editor session. Now click on the menu entry to save the file.
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Jan
2020년 10월 20일
Please post the complete error message.
Noa Yelin
2020년 10월 20일
Walter Roberson
2020년 10월 20일
편집: Walter Roberson
2020년 10월 20일
What is n in the code?
Also change the test to
if isequal(A,zeros(n))
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Steven Lord
2020년 10월 20일
You asked a continuation question here. In the future, please keep discussions of the same issue in one Answers post.
Noa Yelin
2020년 10월 20일
You want to identify a "regular matrix and non-singular matrix". Then testing only, if it is square and not a zero matrix ist not sufficient. Even matrices with non-zero elements can be singular.
It is hard to guess, if your code is "correct", because you do not explain what you try to achieve. Therefore just some hints:
n=size(A)
if isequal(A,zeros(n))
is equivalent to:
if any(A)
So your code canbe simplified to:
function x = irr_mat(A)
if any(A(:)) && size(A, 1) == size(A, 2) && ismatrix(A) % BUGFIX: any(A) -> any(A(:))
x = 1;
else
x = 0;
end
end
% Or shorter:
function x = irr_mat(A)
x = (any(A) && size(A, 1) == size(A, 2) && ismatrix(A));
end
But this is not a hard test for singularity.
댓글 수: 5
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Noa Yelin
2020년 10월 20일
Walter Roberson
2020년 10월 20일
You need to post complete error messages indicating what the error is, not just where it is. For example is it complaining that there is no such function det for inputs of class DynamicSystem ?
Reminder: det() will generate an error if it is passed something that is not a square matrix, so you should never call det() until after you have ensure that the matrix is square.
Jan
2020년 10월 21일
@Noa Yelin: I had a bug in the code, which is fixed now. See my answer.
카테고리
도움말 센터 및 File Exchange에서 Linear Algebra에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!