Hi, I have tried to use digraph on a Matlab2016 version.
However the result is: Error using digraph/subsref Method 'subsref' is not defined for class 'digraph' or is removed from MATLAB's search path.
Error in name of program (line 117) plot(G,'Layout','force','EdgeLabel',G.Edges.Weight,'markersize',20)
Warning: Function subsasgn has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.
thanks

댓글 수: 2

Please show us the output of
which plot
I suspect you have created a variable named "plot"
Please show us the output of these commands:
which plot -all
which subsasgn -all

댓글을 달려면 로그인하십시오.

 채택된 답변

Guillaume
Guillaume 2017년 9월 11일
편집: Guillaume 2017년 9월 11일

0 개 추천

Is there actually a Weight column in your edge table? If you haven't specified a weight of any edge, the Weight column is never created.
I can easily reproduce a similar error in R2017a if the graph does not have weights for the edges. In R2017a, the error message is a bit more detailed:
>> G = digraph([1 1], [2 3]);
>> plot(G,'Layout','force','EdgeLabel',G.Edges.Weight,'markersize',20)
Error using digraph/subsref (line 27)
Unrecognized variable name 'Weight'.
>> G.Edges
ans =
2×1 table
EndNodes
________
1 2
1 3
However,
>> G = digraph([1 1], [2 3], [5 3])
>> plot(G,'Layout','force','EdgeLabel',G.Edges.Weight,'markersize',20)
>> G.Edges
ans =
2×2 table
EndNodes Weight
________ ______
1 2 5
1 3 3
No error

댓글 수: 4

economics student
economics student 2017년 9월 12일
편집: Guillaume 2017년 9월 12일
Hi, many thanks. This is what i have:
ss=[];
tt=[];
weights=[];
for i=1:N
for j=1:N
if Deltatnet(i,j)>0
ss=[ss,i];
tt=[tt,j];
weights=[weights,Deltatnet(i,j)];
end
end
end
And how do you create the graph from that? with?
G = digraph(s, t, weights)
if so, I don't know what the problem is unless you've named a variable or function the same as plot, subsref or other important matlab function.
Unrelated to your immediate problem, you're using the most inefficient method to build your graph. You can just pass your weighted adjacency matrix directly to digraph:
G = digraph(deltatnet);
Even if you wanted to build the edge and weight lists prior to creating the graph, you could do it a lot more efficiently in just one line:
[ss, tt, weights] = find(Deltatnet);
economics student
economics student 2017년 9월 12일
편집: Walter Roberson 2017년 9월 12일
The graph is created like this:
G = digraph(ss,tt,weights,names);
plot(G,'Layout','force','EdgeLabel',G.Edges.Weight,'markersize',20)
axis equal off
economics student
economics student 2017년 9월 12일
Hi, thanks again. I have reloaded the program and it seems to work out for some reason. Will certainly take note of your suggestions as well. Best regards.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

질문:

2017년 9월 11일

편집:

2017년 9월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by