2014-07-17 40 views
1

我想将我的循环输出保存到单元格中。现在,它全部保存为一个大单元格,但我希望在查看WAS_openWAS_close(即j计数器)中的每一行后将输出保存为单元阵列内的不同单元格。保存输出到单元格

O3_time = cell2mat(SARP2014_O3(:,2)); % Time data was taken 
O3_data = cell2mat(SARP2014_O3(:,3)); % Data 

% WAS 
WAS_open = cell2mat(SARP2014_VertWAS(:,5)); % Open can time 
WAS_close = cell2mat(SARP2014_VertWAS(:,6)); % Close can time 
WAS_snake = cell2mat(SARP2014_VertWAS(:,1)); % Snake number 

format long 

k = 1; 
for j = 1:length(WAS_open) % Number of observations for O3 
    for i = 1:length(O3_time); % Number of cans 
     if O3_time(i) >= WAS_open(j) && O3_time(i) <= WAS_close(j) % For all O3 between open and close times 
      new_array{k}' = O3_data(i); % Save the O3 data that falls between the open and close times 
      k = k+1; 
     end 
    end 
end 

所以基本上,SARP2014_VertWAS的每一行都有一个开放时间和一个关闭时间。我想查找这两次之间的O3数据(每秒测量一次),并将其保存到单元格中。因此,第1行的开始时间和结束时间之间的数据将保存在new_array {1}中,落在第2行开始时间和结束时间之间的数据将保存在new_array {2}等中。

然后,我需要找到每个单元格的平均值并将其附加到SARP2014_VertWAS。

的SARP2014_VertWAS的片段ARRY:

Snake Can  Flight Date Open time   Close time 
1901 7136 'RF219' 735774 735600.685763889 735600.686030093 
1916 6057 'RF219' 735774 735600.686458333 735600.686932870 
1917 8300 'RF219' 735774 735600.687152778 735600.687592593 
1902 7169 'RF219' 735774 735600.687847222 735600.688310185 
1915 6129 'RF219' 735774 735600.688541667 735600.688993056 
1918 8279 'RF219' 735774 735600.689432870 735600.689872685 
1903 7127 'RF219' 735774 735600.690277778 735600.690729167 
1914 6102 'RF219' 735774 735600.693402778 735600.693796296 
1919 8203 'RF219' 735774 735600.693877315 735600.694259259 
1904 7203 'RF219' 735774 735600.694328704 735600.694699074 

片段的SARP2014_O3数组:

735773 735600.690659722 0.521049000000000 
735773 735600.690671296 0.521049000000000 
735773 735600.690682870 0.521049000000000 
735773 735600.690694445 1.42528000000000 
735773 735600.690706019 1.42528000000000 
735773 735600.690717593 1.42528000000000 
735773 735600.690729167 1.42528000000000 
735773 735600.690740741 2.39701000000000 
735773 735600.690752315 2.39701000000000 
735773 735600.690763889 2.39701000000000 
735773 735600.690775463 NaN 

回答

0

拉出数据并跟踪多少分是每个打开和关闭时间之间蛇。然后,将找到的平均值(点数)作为指标。

k = 1; 
num_of_pts = zeros(120,1); 
O3_WAS = zeros(5329,1); 
for j = 1:length(WAS_open) % Number of observations for O3 
    tick = 0; 
    for i = 1:length(O3_time); % Number of cans 
     if O3_time(i) >= WAS_open(j) && O3_time(i) <= WAS_close(j) % For all O3 between open and close times 
      O3_WAS(k) = O3_data(i); % Save all O3 data from that WAS can to a new array 
      array(j) = O3_data(i); % Save all O3 data from that WAS can to a new array 
      tick = tick+1; 
      % avg_O3(j) = nanmean(new_array(k)); % Average all O3 data from that can 
      k = k+1; % Advance the counter 
     end 
    end 
    num_of_pts(j) = tick; 
end 

avg_O3 = zeros(120,1); 
% Find the average O3 during the interval each can was open 
for n = 1:length(WAS_open-1) 
    for i = 1:sum(num_of_pts) 
     if n == 1 
      avg_O3(1) = nanmean(O3_WAS(1:num_of_pts(n))); % First one 
     else 
      avg_O3(n) = nanmean(O3_WAS(num_of_pts(n-1)+1:((num_of_pts(n-1)+num_of_pts(n))))); 
     end 
    end 
end