Clear Filters
Clear Filters

Check for incorrect argument data type or missing argument in call to function 'neighbors'.

2 views (last 30 days)
Hi! I am having an error on the following functions. I have all the inputs but the fucntion is still not able to read it.Please see the snapshot
j=1;
for i=1:numel(M_nodes_idx)
% disp(i)
current_node = M_nodes_idx(i,1);
if neighbors(current_node,g)~=current_node
n1n2 = neighbors(g,current_node);
  2 Comments
Cris LaPierre
Cris LaPierre on 9 Jan 2022
What are the values of g and current_node when you get this error? See the page Debug MALTAB Code Files if you are not sure how to get these values.
Omer Iqbal
Omer Iqbal on 9 Jan 2022
Th value of current mode is 1, while g has all edges and nodes. I am trying to understand the problem through debuding but the problem does not seems to be clear becasue I have all the inputs and the fucntion should be working.

Sign in to comment.

Answers (1)

Cris LaPierre
Cris LaPierre on 11 Jan 2022
@Star Strider had what I thought was the correct answer. In your if statement, you reverse the order of your inputs to neighbors.
g should be your graph object (e.g. g = graph(bucky);), which we can't see, so check that, and nodeID should be a single node (e.g. current_node)
% v This should be the first input to neighbors
if neighbors(current_node,g)~=current_node
n1n2 = neighbors(g,current_node);
Try correcting the order of your inputs.
if neighbors(g,current_node)~=current_node
n1n2 = neighbors(g,current_node);
  2 Comments
Omer Iqbal
Omer Iqbal on 12 Jan 2022
Thank you so for your suggestions. I have tried to change the order but I am still getting the same error mentioned above.
When I looked into g( 1*1 graph) , I have found that it has two parts , one is edges while second is Nodes. The edges has values in it while Nodes doesnot have any value in it. I have used the follwoing codes to generate g. I am not sure why it is not computing the Nodes in g. Please snapshot and codes below;
for i=1:numel(EndNodes(:,1))
%disp(i)
if numel(EndNodes{i,1}{1,1})>1
EndNodes{i,1}{1,1} = min (EndNodes{i,1}{1,1});
end
EndNodes2(i,1)=EndNodes{i,1}{1,1};
if numel(EndNodes{i,1}{1,2})>1
EndNodes{i,1}{1,2} = min (EndNodes{i,1}{1,2});
end
EndNodes2(i,2)=EndNodes{i,1}{1,2};
end
% creating and empty graph and assigning edges to it
g=graph();
g = addedge(g,EndNodes2(:,1),EndNodes2(:,2));

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!