对于 digraph ,我想将非正整数用作 数字节点ID。 e.g;
java.lang.IllegalStateException: Request.getPart is called without multipart configuration. Either add a @MultipartConfig to the servlet, or a multipart-config element to web.xml
如果我这样做,我会收到:
使用digraph / addedge> validateNodeIDs(第155行)时出错
数字节点ID必须是正整数。
答案 0 :(得分:0)
虽然digraph
不允许节点ID为非正数,但我认为这不是一个好的功能,但我已经使用以下编程方式使其工作: -
我们想要制作有向图的矩阵是:
A = [-1 1 3];
B = [ 3 2 0];
现在,请使用以下代码,而不是使用digraph
's documentation的方法,而不是plot(addedge(digraph, A , B))
。
ax=plot(addedge(digraph,(-min([A,B])+1)*ones(size(A))+A,(-min([A,B])+1)*ones(size(B))+B));
ax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' ');
此代码适用于每个整数NodeID,无论是负数,零还是正数。
我在这里使用的策略是操纵节点值,使节点的最小值变为1.当绘制有向图时,再次操纵节点值以显示实际值。
<强>步骤: - 强>
min([A,B])
找到矩阵A
和B
的最小值。-1
相乘,结果与+1
相加。即-min([A,B])+1
。因此,在上面的示例中,由于[A,B]
的最小值为-1
,因此会将-1
乘以+1
,然后将1
添加到其中这给了+2
。然后将结果乘以ones(size(A))
以获得矩阵
与A
相同大小的所有相同数字。因此,在上面的示例中,(-min([A,B])+1)*ones(size(A))
的结果是[2 2 2]
现在,结果会添加到原始A
矩阵中,使[A,B]的最小值等于1
。
ax.NodeLabel=strsplit(num2str(min([A,B]):max([A,B])),' ');
即,使用[A,B]
生成从最小值[A,B]
到最大值min([A,B]):max([A,B])
的数字数组,然后使用num2str
转换为字符串resulting string is then converted into a cell array这是设置节点标签的要求。