how do i delete questions?

3 次查看(过去 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 个评论
alexp10
alexp10 2020-5-4
No, he deleted his comment after his answer where he was frustrated (because I was a beginner in matlab). He was frustrated before, that's why I wanted to delete the question. I appreciated his first answer. Not his second one. But he deleted that.
Rena Berman
Rena Berman 2020-5-14
(Answers Dev) Restored edit

请先登录,再进行评论。

采纳的回答

Stephen23
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 个评论
alexp10
alexp10 2020-5-3
Thankyou Tommy! Turns out that I had to write that line outside the function. Thanks alot!
Tommy
Tommy 2020-5-3
编辑:Tommy 2020-5-3
"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:

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by