1

次に到着する列車を返すライブデータAPIを使用しています。次の5本の列車が到着するようにユーザーに提供する予定です。到着する列車が5本未満の場合、どのように処理しますか?方法を考えるのに苦労しています。ifステートメントで方法を考えていましたが、どのように設定するかわかりません。

time1Depart = dataReturnedFromLiveAPI{1,1}.orig_departure_time;
time2Depart = dataReturnedFromLiveAPI{1,2}.orig_departure_time;
time3Depart = dataReturnedFromLiveAPI{1,3}.orig_departure_time;
time4Depart = dataReturnedFromLiveAPI{1,4}.orig_departure_time;
time5Depart = dataReturnedFromLiveAPI{1,5}.orig_departure_time;

time1Arrival = dataReturnedFromLiveAPI{1,1}.orig_arrival_time;
time2Arrival = dataReturnedFromLiveAPI{1,2}.orig_arrival_time;
time3Arrival = dataReturnedFromLiveAPI{1,3}.orig_arrival_time;
time4Arrival = dataReturnedFromLiveAPI{1,4}.orig_arrival_time;
time5Arrival = dataReturnedFromLiveAPI{1,5}.orig_arrival_time;

現在、コードは1:numoftrainsからの行列を使用していますが、最初の5つだけを使用しています。

4

1 に答える 1

2

個々の値を別の変数に割り当てることは悪い習慣です。orig_departure_timeおよびのクラスに応じて、関連するすべての値をベクトルまたはセル配列に渡すとよいでしょうorig_arrival_time

dataReturnedFromLiveAPI構造のセル配列のように見えます。次に、次のことができます。

timeDepart = cellfun(@(x), x.orig_departure_time, ...
    dataReturnedFromLiveAPI(1,1:min(5,size(dataReturnedFromLiveAPI,2))), ...
    'UniformOutput',0 );
timeArrival = cellfun(@(x), x.orig_arrival_time, ...
    dataReturnedFromLiveAPI(1,1:min(5,size(dataReturnedFromLiveAPI,2))), ...
    'UniformOutput',0 );

次に、値に1つずつアクセスする方法を説明します。

time1Depart = timeDepart{1};

orig_departure_timeおよびorig_arrival_timeが数値スカラーの場合、を使用できます...'UniformOutput',1...。出力はベクトルとして取得され、。を使用して単一の値を取得できますtimeDepart(1)

于 2013-03-08T02:29:11.873 に答える