gusucode.com > 十大算法matlab程序说明 > 十大算法matlab程序说明/遗传算法/用MATLAB实现遗传算法程序/de2bi.m

    function b = de2bi(d, n, p)
%function b = de2bi(d, n, p)
%DE2BI  转换10进制数为二进制数。
%        B = DE2BI(D) 转换正整数向量D成二进制矩阵B。
%        二进制矩阵B的每一行表示十进制向量D中相应的数。
%       B = DE2BI(D, N) 转换正整数向量D成二进制矩阵B,
%        但指定B的列数为N。
%       B = DE2BI(D, N, P) 转换正整数向量D成p进制矩阵B。
%      p进制矩阵B的每一行表示十进制向量D中相应的数。
%           作者:机自01-2班曾新海
%           zxh21st@163.com
d = d(:);len_d = length(d);
if min(d) < 0, error('Cannot convert a negative number');
elseif ~isempty(find(d==inf)),
     error('Input must not be Inf.');
elseif find(d ~= floor(d)), 
    error('Input must be an integer.');  
end;
if nargin < 2,
   tmp = max(d); b1 = [];
   while tmp > 0
      b1 = [b1 rem(tmp, 2)];tmp = floor(tmp/2);
   end;
   n = length(b1);
end;
if nargin < 3,p = 2;end;
b = zeros(len_d, n);
for i = 1 : len_d
   j = 1;tmp = d(i);
   while (j <= n) & (tmp > 0)
      b(i, j) = rem(tmp, p);tmp = floor(tmp/p);
      j = j + 1;
end;end;