how do i delete questions?
조회 수: 2 (최근 30일)
이전 댓글 표시
I do not want to use assignin,evalin or eval. If you run the code you'll see that at the bottom the matrices for M_A, M_B, M_C and M_D are displayed. Please can you show me how I can have these variables as outputs and their matrices in the workspace? So far only the first output value (M_A)is showing up as an output, as "ans". I'd like it to say M_A, and same for the others (M_B, M_C and M_D). Please help
function [M_A, M_B, M_C, M_D] = DiagDom
A = [ 1 4 0 1 1; -1 -5 9 -20 2 ; 15 1 4 5 1 ; 2 2 -5 0 0; 0 2 -3 1 -9];
B= [ 9 3 3; 12 3 2; 1 3 5];
C= [ 1 13 2; 1 3 9; -12 2 -1];
D= [ 5 -2 4 2; 0 3 -1 -1; 3 3 9 -5;1 1 1 5];
oldA = [ 1 4 0 1 1; -1 -5 9 -20 2 ; 15 1 4 5 1 ; 2 2 -5 0 0; 0 2 -3 1 -9];
oldB= [ 9 3 3; 12 3 2; 1 3 5];
oldC= [ 1 13 2; 1 3 9; -12 2 -1];
oldD= [ 5 -2 4 2; 0 3 -1 -1; 3 3 9 -5;1 1 1 5];
M = {A,B,C,D};
for i=1:numel(M)
count = 0;
while(1) % Perform infinite loop, till you find the diagonally dominant matrix
if itisDiagDom (M{i}) % If this is diagonally dominant, disp and break the loop
disp (['Matrix M is diagonally-dominant']);
celldisp(M) ;
disp([count]);
break;
else
M{i} = M{i}(randperm(size(M{i}, 1)), :);
count= count+1 ;
disp([count]);
if count > 500
if itisDiagDom (M{1})
M_A = M{1}
else
M_A = oldA
end
if itisDiagDom (M{2})
M_B= M{2}
else
M_B= oldB
end
if itisDiagDom (M{3})
M_C= M{3}
else
M_C= oldC
end
if itisDiagDom (M{4})
M_D= M{4}
else
M_D= oldD
end
break ;
end
% Randomly swaps rows
end
end
end
end
function [isdom] = itisDiagDom( A )
isdom = true;
for r = 1:size(A,1)
rowdom = 2 * abs(A(r,r)) > sum(abs(A(r,:)));
isdom = isdom && rowdom;
end
if isdom == 0
disp (['Matrix']);
disp([A]);
disp([' is not diagonally-dominant']);
elseif isdom == 1
disp (['Matrix is diagonally-dominant']);
disp([A]);
end
end
댓글 수: 5
채택된 답변
Stephen23
2020년 5월 3일
편집: Stephen23
2020년 5월 3일
You need to call the function with all of its output arguments, e.g. (pick the names to suit your needs):
[A,B,C,D] = DiagDom();
Very basic MATLAB concepts, e.g. how to call functions with multiple output arguments, are explained in the introductory tutorials:
댓글 수: 4
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Construct and Work with Object Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!