Populating a matrix with user input

3 次查看(过去 30 天)
answer=inputdlg({'nodes'});
nodes=str2double(answer(1,1));
nodematrix=Inf(nodes);
A=1;
B=0;
answer=[];
while A < nodes
B = B+1;
while B < nodes
B = B+1;
answer = str2double(inputdlg(['Enter resistance between ',num2str(A),' and ',num2str(B)]));
nodematrix(A,B) = str2double(answer)
nodematrix(B,A) = str2double(answer)
end
A = A+1;
B = 1;
end
disp(nodematrix)
OUTPUT:
Inf NaN NaN NaN NaN
NaN Inf NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN Inf
I was wondering why these are showing up as NaN?? And I also am trying to fill this where it does not ask to fill the diagonal.. The diagonal should always be zero. I don't know why its asking for those values..

采纳的回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2019-11-5
编辑:KALYAN ACHARJYA 2019-11-5
See the example:
Get the data from inputdlg;
Say any number 3, 4,5,6 ........
Then
>> str2double(4)
ans =
NaN
>> str2double(7)
ans =
NaN
I have removed the str2double in answer statement, str2double convert strings to double precision values, not numeric data
answer=inputdlg({'nodes'});
nodes=str2double(answer(1,1));
nodematrix=nodes6;
A=1;
B=0;
answer=[];
while A < nodes
B = B+1;
while B < nodes
B = B+1;
answer =inputdlg(['Enter resistance between ',num2str(A),' and ',num2str(B)]);
nodematrix(A,B) = str2double(answer)
nodematrix(B,A) = str2double(answer)
end
A = A+1;
B = 1;
end
##
nodematrix =
6 5 6 7 8 3
5 0 6 7 8 2
6 6 4 7 3 6
7 7 7 8 5 0
8 8 3 5 5 6
3 2 6 0 6 0
  3 个评论
Emma Sellers
Emma Sellers 2019-11-5
That worked to get numbers! Can you tell me how to fix it so it doesnt ask about the diagonal? I.e. I don't want (1,1), (2,2), (3,3) to change..

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by