1。函数名:CrtPower(a)
作用:计算矩阵中的向量权
优点:直接由原始数据可以换算出矩阵中的向量权
源代码:
function rstPower=CrtPower(a) %********************************************************** % This is Help Information About Power() Function. % Find the min number in the matrix. % Verison:1.2.0 Finish Date:30/08/2004 % Usage: % Power(a) %a is matrix . % return a rstPower. %***********************************************************
if nargout>1 error('Too many output arguments!'); else if (nargin<1 | nargin>=2) error('Too many input arguments!'); else SumCols=length(a(1,:));%Get the Cols of the matrix. if SumCols>=3 SumRows=length(a(:,1));%Get the Rows of the matrix. rstPower=zeros(SumRows); for Col=2:SumCols-1 ParCol=a(:,Col); BefCol=a(:,Col-1); AftCol=a(:,Col+1); for RowCount=1:SumRows; for tmpRow=1:SumRows; if RowCount==tmpRow rstPower(RowCount,tmpRow)=0; else if ParCol(RowCount)-BefCol(tmpRow)>=0 tmpM=ParCol(RowCount)-BefCol(tmpRow); if AftCol(RowCount)-ParCol(tmpRow)>=0; tmpN=AftCol(RowCount)-ParCol(tmpRow); else tmpN=AftCol(RowCount)-ParCol(tmpRow); end; rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM)+abs(tmpN)-(Col-2)*abs(tmpM); else tmpM=(SumCols-Col+1)*(ParCol(RowCount)-BefCol(tmpRow)); if AftCol(RowCount)-ParCol(tmpRow)>=0; tmpN=AftCol(RowCount)-ParCol(tmpRow); rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM+tmpN)-(Col-2)*abs(tmpM); else tmpN=AftCol(RowCount)-ParCol(tmpRow); rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM)+abs(tmpN)-(Col-2)*abs(tmpM); end; end; end;%End if end;%End tmpRow for end;%End RowCount for end;%End Col For else error('Length of the martrix is too short!The minium number is 3!'); end; %End if SumCols>=3 end;%End If (nargin<1 | nargin>=2) end;
2。函数名:FindMinParam(a,iCount,Diff)
作用:查找矩阵中指定的iCount个最小数。查找同行中(Diff=0,默认值)、不同行(Diff=1)中最小值
优点:直接给出数据就可以查找出矩阵中较小元素所在的行和列
源代码:
function rst=FindMinParam(a,iCount,Diff) %********************************************************** % This is Help Information About FindMinParam() Function. % Find the min number in defferent Rows and Cols the matrix. % Verison:1.1.2 Finish Date:28/08/2004 % Usage: % FindMinParam(a,iCount,Diff) % a is matrix . % iCount is Counter. % Diff is the parame to Find the mininum in Different Row. %***********************************************************
if nargout>1 error('Too many output arguments!'); else if (nargin==0 | nargin>3) error('Too many input arguments!'); else Cols=length(a(1,:)); Rows=length(a(:,1)); if nargin==1 iCount=Rows * Cols; Diff=0; end; if nargin==2 | nargin==3 if iCount>Rows * Cols error('The search number is too big!'); iCount=Rows * Cols; elseif iCount<1 error('The mininum is 1'); iCount=1; else iCount=iCount; end; if nargin==3 if Diff==1 Diff=1; else Diff=0; end; else Diff=0; end; end; rst=zeros(iCount,3); for Count=1:iCount Succ=0; for RowCount=1:Rows; for ColCount=1:Cols; if (min(min(a))==a(RowCount,ColCount)); tmpMin=min(min(a)); tmpRow=RowCount; tmpCol=ColCount; if Diff==1 a(RowCount,:)=inf; a(:,ColCount)=inf; else a(RowCount,ColCount)=inf; end; Succ=1; break; end; end %End For if Succ==1 break; end; end; if Succ==1 rst(Count,1)=tmpMin; rst(Count,2)=tmpRow; rst(Count,3)=tmpCol; end; end; disp(rst); end; end;
面对问题:
1.CrtPower函数还需要继续改进,测试其是否能推广到更多的问题;
2.能否将FindMinParam程序添加功能,使用户指定所要查找的数据。
3.能否将最终的结果用直观图表示出来?
总结:
本次模型在推广方面有了改进,大家也是尽心去将本次实验作的更好,值得以后发扬。程序方面也有了一定的提高。

|