how do i delete questions?
4 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Stephen23
on 3 May 2020
Edited: Stephen23
on 3 May 2020
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 Comments
Tommy
on 3 May 2020
Edited: Tommy
on 3 May 2020
"Reason: Another answer is better"
alroyp10, only one answer was posted in response to the question, and it did sufficiently answer what was asked.
"how do i delete questions?"
See the third paragraph here:
The first paragraph here:
And many of the responses here:
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!