폭풍의 지속 시간을 결정하기 위해 특정 폭풍의 모든 관측과 다중 폭풍 중 허리케인 관측 사이에 연속 시간 (변수 'hrs')을 누적하여 합계하려고합니다. 이것은 내가 무엇을 가지고 :루프 누적 합계 matlab
stormid = [188, 188, 288, 288, 288, 388, 488, 488, 588...] %numbers represent a unique
% code identifying a particular storm (i.e. 188= 1st storm of 1988)
hrs = [0,6,0,6,6,0,0,6,0...] %hours between observations in each storm
% where 0 indicates the start of a storm (this corresponds with the stormid above)
내 목표는 각 폭풍 ID의 시간 합계를, 그래서 일하는 것이 accumarray를 사용하여 생각했지만 그렇지 않았다. 여기 내가 시도한 것이있다.
duration= accumarray(stormid, hrs, []);
그런 다음 나는 cumsum을 시도했지만 폭풍우 id가 같을 때만 cumsum을 사용하는 방법을 알아낼 수 없었습니다.
누구나 아이디어가 있다면 크게 감사하겠습니다. 감사.
나는 이것을 깔끔하게하는 방법을 생각할 수 없다. 'accumarray '는 벡터가 아닌 스칼라를 반환하는 함수에서만 사용할 수 있으므로'cumsum'과 함께 사용할 수 없습니다. 새 ID 번호를 찾을 때마다 시작하여'stormid'를 반복하고'hrs'를 수동으로 합칠 수 있습니까? – eigenchris
'duration = accumarray (stormid, hrs, []);'에 대한 오류 메시지는 무엇이라고합니까? '두 번째 입력 VAL은 SUBS에서 각'** row **'또는 스칼라에 대해 하나의 요소를 갖는 벡터 여야합니다. 'doc accumarray'의 두 번째 예제를 읽었을 때이 전이 문제를 해결할 수 있습니다. – knedlsepp
sidenote : stormID가 연속적이지 않으므로 열 벡터와 함께 'accumarray'를 사용하는 대신 값을 합계 할 수 있지만 메모리를 절약 할 수있는'sparse'를 사용해야합니다 (또는 ID를 '고유'를 사용하여 선처리 단계에서). – knedlsepp