永发信息网

匈牙利算法 matlab程序出现问题 运行时出现 Undefined function or variable 'a'.

答案:2  悬赏:70  手机版
解决时间 2021-02-13 23:23
  • 提问者网友:动次大次蹦擦擦
  • 2021-02-13 05:07
源程序为:
function [Matching,Cost] = Edmonds(a)
Matching = zeros(size(a));
num_y = sum(~isinf(a),1);
num_x = sum(~isinf(a),2);
x_con = find(num_x~=0);
y_con = find(num_y~=0);
P_size = max(length(x_con),length(y_con));
P_cond = zeros(P_size);
P_cond(1:length(x_con),1:length(y_con)) = a(x_con,y_con);
if isempty(P_cond)
Cost = 0;
return
end
Edge = P_cond;
Edge(P_cond~=Inf) = 0;
cnum = min_line_cover(Edge);
Pmax = max(max(P_cond(P_cond~=Inf)));
P_size = length(P_cond)+cnum;
P_cond = ones(P_size)*Pmax;
P_cond(1:length(x_con),1:length(y_con)) = a(x_con,y_con);
exit_flag = 1;
stepnum = 1;
while exit_flag
switch stepnum
case 1
[P_cond,stepnum] = step1(P_cond);
case 2
[r_cov,c_cov,M,stepnum] = step2(P_cond);
case 3
[c_cov,stepnum] = step3(M,P_size);
case 4
[M,r_cov,c_cov,Z_r,Z_c,stepnum] = step4(P_cond,r_cov,c_cov,M);
case 5
[M,r_cov,c_cov,stepnum] = step5(M,Z_r,Z_c,r_cov,c_cov);
case 6
[P_cond,stepnum] = step6(P_cond,r_cov,c_cov);
case 7
exit_flag = 0;
end
end
Matching(x_con,y_con) = M(1:length(x_con),1:length(y_con));
Cost = sum(sum(a(Matching==1)));
end
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-02-13 05:48
调用 Edmonds 时,忘了个 实际参数 a(有值得)或数值了。
也可以 用默认参数值。
function [Matching,Cost] = Edmonds(a)
if nargin==0
a=.......;
end
Matching = zeros(size(a));
.........
全部回答
  • 1楼网友:夜风逐马
  • 2021-02-13 06:15
把大写的s改成小写s。 前面定义的是s,出错的那行写成了s了。   根据注释,s=1时跟踪阶跃信号,s=2时跟踪方波信号。但方波周期太大,导致根本看不到效果。可以把 rin(k)=sign(sin(0.0002*2*pi*k*ts));改成 rin(k)=sign(sin(0.002*2*pi*k*ts));才能看到效果。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯