0

このコードを書いた関数ファイルで、経過時間を調べたいと思います。

function elapsed = elapsedTime(d1,d2)
%Input d1 = '2010/12/04 12:00:00'
%Input d2 = '2010/12/14 13:06:36'
d1r = regexp(d1,'((/|:)?|[ ])?','split');
d2r = regexp(d2,'((/|:)?|[ ])?','split');
elapsed = cellfun(@minus,d1r,d2r,'UniformOutput',false);
end

出力は次のとおりです。

ans = 
    [1x4 double]    [1x2 double]    [1x2 double]    [1x2 double]    [1x2 double]    [1x2 double]

この出力形式は、経過時間を見つけるために使用できないため、適切ではありません!

次のようなセル配列が得られない場合、実際の出力にマップするためにどのように使用できますか:

ans = '0000' '00' '00' '01' '06' '36'

これを修正する方法はありますか?

4

2 に答える 2

1

文字列を減算し、数値が (文字列の形式で) 返されることを期待しています。

あなたがそうするなら、あなたは何が起こると思いますか:

>> '3' - '10'

? あなたが答えが であるべきだと言うなら、どう'-7'ですか

>> 'a' - 'B'

?

最もわかりやすい解決策は、文字列を数値に変換し、減算を実行して、文字列に戻すことです。

elapsed = cellfun(@(x,y) ...
    num2str(str2double(y)-str2double(x)), ...
    d1r, d2r, 'UniformOutput', false);
于 2013-09-05T16:00:08.767 に答える