2014-07-18 16 views
1

我正在mat實驗室中處理大量數據的項目。我需要爲電子表格中的現有模型創建一個源代碼,其中計算在電子表格中逐行進行。我有問題編寫電子表格的最後5列的代碼,其中第一列的第二行的結果將發送到使用第五列第一行的結果等等。 有關信息,現有電子表格模型的Matlab源代碼

  1. DH/dx是第1列
  2. GWFLOW是第2列
  3. GWDROP被第3列
  4. NETGWCHANGE是第4列
  5. REVGW是第五列

清晰視圖的excel文件的屏幕截圖 Excel file

這裏是我做的代碼:

 %% dh/dx 
    dh_dx=zeros(numel(rocky.RAIN),1); 
    % for the first row 
    dh_dx(1)=(ingwl-effecbase)/meandx; 
    %for the remaining dh/dx 
     for s=2:numel(HER); 
      dh_dx(s)=(REVGW(s-1)-effecbase)/meandx; 
     end 

    %% GW flow for unit width 
    GWFLOW=zeros(numel(rocky.RAIN),1); 
    for t=1:numel(HER); 
     GWFLOW(t)=K*dh_dx(t)*aqb; 
    end 

    %% Drop of GW due to GW flow 
    GWDROP=zeros(numel(rocky.RAIN),1); 
    for u=1:numel(HER); 
     GWDROP(u)=(GWFLOW(u)/(aqb*por)); 
    end 

    %% Net Groundwater change 
    NETGWCHANGE=zeros(numel(rocky.RAIN),1); 
    for v=1:numel(HER); 
     NETGWCHANGE(v)=INCGW(v)-GWDROP(v); 
    end 

    % Revised GW level Estimate 
    REVGW=zeros(numel(rocky.RAIN),1); 
    %for the first row 
    REVGW(1)=ingwl+NETGWCHANGE(1); 
    for w=2:numel(HER); 
     REVGW(w)=REVGW(w-1)+NETGWCHANGE(w) 
    end 

預先感謝您

+0

高代表用戶可以編輯您的圖像。只需在您的問題中添加鏈接。 – Sifu

+0

@Sifu感謝您的建議。 – SABER

回答

2

的問題是,你在你的代碼計算所有數據separatedly,而它需要計算所有在一起,在同一個循環中:

% Allocate data 
    dh_dx  = zeros(numel(rocky.RAIN),1); 
    GWFLOW  = zeros(numel(rocky.RAIN),1); 
    GWDROP  = zeros(numel(rocky.RAIN),1); 
    NETGWCHANGE = zeros(numel(rocky.RAIN),1); 
    REVGW  = zeros(numel(rocky.RAIN),1); 

    % Seed the calculation on the first row 
    dh_dx(1)  = (ingwl-effecbase)/meandx; 
    GWFLOW(1)  = K*dh_dx(1)*aqb; 
    GWDROP(1)  = (GWFLOW(1)/(aqb*por)); 
    NETGWCHANGE(1) = INCGW(1)-GWDROP(1); 
    REVGW(1)  = ingwl + NETGWCHANGE(1); 

    % Loop trough the other rows and calculate fields 
    for s = 2:numel(HER) 
      dh_dx(s)  = (REVGW(s-1)-effecbase)/meandx; 
      GWFLOW(s)  = K*dh_dx(s)*aqb; 
      GWDROP(s)  = GWFLOW(s)/(aqb*por); 
      NETGWCHANGE(s) = INCGW(s) - GWDROP(s); 
      REVGW(s)  = REVGW(s-1) + NETGWCHANGE(s); 
    end; 
+0

非常感謝您的幫助。 – SABER