jxb4137 发表于 2017-7-6 09:18

MATLAB处理简单的日期字符串

% CUMCM2012C
% Author ID:jxb4137
function dv = isdate( str )
% Input date string,returns the year, month, and day vectors.
    if regexp(str,'20\d{2}/\d{1,2}/\d{1,2}') == 1 % Distinguish yyyy/mm/dd HH:MM:SS or yyyy/mm/dd
        vec = regexp(str,' ','split');
        vec = regexp(vec{1,1},'/','split'); % Process
        dv = str2num(char(vec))'; % Output date vector
    else
        if regexp(str,'20\d{2}\-\d{1,2}\-\d{1,2}') == 1 % yyyy-mm-dd
        vec =  regexp(str,'-','split');
        dv = str2num(char(vec))';
    else
        if regexp(str,'\d{1,2}/\d{1,2}/20\d{2}') == 1 % dd/mm/yyyy
        vec =  regexp(str,'/','split');
        dv = fliplr(str2num(char(vec)))';
        else
            if regexp(str,'\d{1,2}\-\d{1,2}\-20\d{2}') == 1 % dd-mm-yyyy
                vec =  regexp(str,'-','split');
                dv = fliplr(str2num(char(vec)))';
                else
                    if regexp(str,'\d{8}') == 1 % yyyymmdd
                        vec =  ;
                        dv = str2num(char(vec))';
                    else
                        dv = NaN;
                    end
                end
            end
        end
    end
end

jxb4137 发表于 2017-7-7 20:32

% Author ID:jxb4137
function = perm(vec,num)
    comb_vec = nchoosek(vec,num);
    matrix = [];
    for i = 1:size(comb_vec,1)
        comb_vec_perm = perms(comb_vec(i,:));
        for j = 1:size(comb_vec_perm,1)
            matrix = ;
        end
    end
end

jxb4137 发表于 2017-7-7 20:34

% Author ID:jxb4137
function = kruskal(G)
    = find(G);
    RCV = ;
    index = RCV(:,1:2);
    n = size(G,1);
    MST = [];                             %最小生成树(MST = )记为一个三列的矩阵
    while size(MST,1) < n-1
        temp = min(RCV(:,3));
        flag = find(RCV(:,3) == temp);
        flag = flag(1);
        i = RCV(flag,1);
        j = RCV(flag,2);
        if index(flag,1) ~= index(flag,2)
            MST = ;
        end
        index(find(index == j)) = i;
        RCV(flag,:) = [];
        index(flag,:) = [];
    end
end

jxb4137 发表于 2017-7-7 20:35

% Author ID:jxb4137
function = floyd(D)
    n = length(D);
    for i = 1:n
        for j = 1:n
            if i ~= j && D(i,j) == 0
                D(i,j) = inf;
            end
        end
    end
    path = zeros(n);
    for k = 1:n
%         D = min(D,bsxfun(@plus,D(k,:),D(:,k)));% 调用内置匿名函数 外加,可以提高运算速度
        for i = 1:n
            for j = 1:n
                if  D(i,j) > D(i,k) + D(k,j)
                    D(i,j) = D(i,k) + D(k,j);
                    path(i,j) = k;
                end
            end
        end
    end
end
页: [1]
查看完整版本: MATLAB处理简单的日期字符串