当前位置:编程学习 > Matlab >>

matlab!!!!

我定义了这样一个m函数如下 function [D,path]=floyd(a) n=size(a,1); D=a; path=zeros(n,n); for i=1:n for j=1:n if D(i,j)~=inf path(i,j)=j; end end end for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)<D(i,j) D(i,j)=D(i,k)+D(k,j); path(i,j)=path(i,k); end end end end %配合floyd算法的后续程序,s为源点,t为宿点 %L为长度,R为路由 function [L,R]=router(D,path,s,t) L=zeros(0,0); R=s; while 1 if s==t L=fliplr(L); L=[0,L]; L=L(end); return end L=[L,D(s,t)]; R=[R,path(s,t)]; s=path(s,t); if s==0 return end end 在matlab中调用时命令是这样的 [D,path]=floyd(a) a=[0 15 ∞ ∞ 24 ∞ 18 ∞ ∞ ∞ ∞ ∞; 15 0 22 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞; ∞ 22 0 18 16 ∞ ∞ ∞ 20 ∞ ∞ ∞; ∞ ∞ 18 0 ∞ 12 ∞ ∞ ∞ ∞ ∞ ∞; 24 ∞ 16 ∞ 0 ∞ ∞ 12 24 ∞ ∞ ∞; ∞ ∞ ∞ 12 ∞ 0 ∞ ∞ 12 ∞ ∞ 22; 18 ∞ ∞ ∞ ∞ ∞ 0 15 ∞ 22 ∞ ∞; ∞ ∞ ∞ ∞ 12 ∞ 15 0 30 ∞ 25 ∞; ∞ ∞ 20 ∞ 24 12 ∞ 30 0 ∞ 19 19; ∞ ∞ ∞ ∞ ∞ ∞ 22 ∞ ∞ 0 19 ∞ ; ∞ ∞ ∞ ∞ ∞ ∞ ∞ 25 19 19 0 21; ∞ ∞ ∞ ∞ ∞ 22 ∞ ∞ 19 ∞ 21 0]; 错误 提示是??? Undefined function or variable 'a'. 求高手帮忙修正正确一下!!!!谢谢 如果实在错得严重,帮忙写一个弗洛伊德的matlab完整算法啊~~~ (我的matlab是7.0的)
答案:a=[0 15 inf inf 24 inf 18 inf inf inf inf inf;
15 0 22 inf inf inf inf inf inf inf inf inf;
inf 22 0 18 16 inf inf inf 20 inf inf inf;
inf inf 18 0 inf 12 inf inf inf inf inf inf;
24 inf 16 inf 0 inf inf 12 24 inf inf inf;
inf inf inf 12 inf 0 inf inf 12 inf inf 22;
18 inf inf inf inf inf 0 15 inf 22 inf inf;
inf inf inf inf 12 inf 15 0 30 inf 25 inf;
inf inf 20 inf 24 12 inf 30 0 inf 19 19;
inf inf inf inf inf inf 22 inf inf 0 19 inf ;
inf inf inf inf inf inf inf 25 19 19 0 21;
inf inf inf inf inf 22 inf inf 19 inf 21 0];
>> [D,path]=floyd(a)

D =

     0    15    37    55    24    60    18    33    48    40    58    67
    15     0    22    40    38    52    33    48    42    55    61    61
    37    22     0    18    16    30    43    28    20    58    39    39
    55    40    18     0    34    12    61    46    24    62    43    34
    24    38    16    34     0    36    27    12    24    49    37    43
    60    52    30    12    36     0    57    42    12    50    31    22
    18    33    43    61    27    57     0    15    45    22    40    61
    33    48    28    46    12    42    15     0    30    37    25    46
    48    42    20    24    24    12    45    30     0    38    19    19
    40    55    58    62    49    50    22    37    38     0    19    40
    58    61    39    43    37    31    40    25    19    19     0    21
    67    61    39    34    43    22    61    46    19    40    21     0


path =

     1     2     2     2     5     5     7     7     5     7     7     5
     1     2     3     3     3     3     1     1     3     1     3     3
     2     2     3     4     5     4     5     5     9     9     9     9
     3     3     3     4     3     6     3     3     6     6     6     6
     1     3     3     3     5     9     8     8     9     8     8     9
     9     4     4     4     9     6     9     9     9     9     9    12
     1     1     8     8     8     8     7     8     8    10     8     8
     7     7     5     5     5     9     7     8     9     7    11    11
     5     3     3     6     5     6     8     8     9    11    11    12
     7     7    11    11     7    11     7     7    11    10    11    11
     8     9     9     9     8     9     8     8     9    10    11    12
     9     9     9     6     9     6    11    11     9    11    11    12
其他:a的输入有误,将∞改为inf,如下:
a=[0 15 inf inf 24 inf 18 inf inf inf inf inf;
15 0 22 inf inf inf inf inf inf inf inf inf;
inf 22 0 18 16 inf inf inf 20 inf inf inf;
inf inf 18 0 inf 12 inf inf inf inf inf inf;
24 inf 16 inf 0 inf inf 12 24 inf inf inf;
inf inf inf 12 inf 0 inf inf 12 inf inf 22;
18 inf inf inf inf inf 0 15 inf 22 inf inf;
inf inf inf inf 12 inf 15 0 30 inf 25 inf;
inf inf 20 inf 24 12 inf 30 0 inf 19 19;
inf inf inf inf inf inf 22 inf inf 0 19 inf ;
inf inf inf inf inf inf inf 25 19 19 0 21;
inf inf inf inf inf 22 inf inf 19 inf 21 0] 函数中有用到a,所以要对a赋值在调用函数之前的

上一个:求助matlab高手,用nlinfit曲线拟合时报错!??? Error using ==> mrdivide Matrix dimensions must agree.
下一个:我想用matlab的GUI创建一个窗口并且能与单片机进行数据交换,请高手指点一下,思路步骤

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,