2013-03-08 120 views
0

訪問行我正在尋找一種方法以更新向量nx113]我的系統的每一個完整的旋轉某些元素。以固定間隔

%% # Iterate through timesteps 
for tt = 1:nTimeSteps 
% # Initialise ink on transfer roller 
rollers(2).ink = [zeros(1,98),ones(1,5),zeros(1,113)]; 

% # Rotate all rollers 
for ii = 1:N 
     rollers(ii).ink(:) = ... 
      circshift(rollers(ii).ink(:),rollers(ii).rotDirection); 
end 

% # Update all roller-connections 
for ii = 1:N 
    for jj = 1:nBins(ii) 
     if(rollers(ii).connections(jj) ~= 0) 
      index1 = rollers(ii).connections(jj); 
      index2 = find(ii == rollers(index1).connections); 
      ink1 = rollers(ii).ink(jj); 
      ink2 = rollers(index1).ink(index2); 
      rollers(ii).ink(jj) = (ink1+ink2)/2; 
      rollers(index1).ink(index2) = (ink1+ink2)/2; 
     end 
    end 
end 

% # Calculate average amount of ink on each roller 
for ii = 1:N 
    averageAmountOfInk(tt,ii) = mean(rollers(ii).ink); 
end 
rollers(18).TakeOff = averageAmountOfInk*0.6; 

end 

矢量輥子(2).ink是我想更新向量。目前該矢量只填充一次,所以我有98:103行。我希望不僅僅是第一次爲我的系統的每個「旋轉」填充這些元素的範圍。 原因 - 我試圖顯示墨水被間歇僅從輥表面的一小部分加入,因此需要僅五個單元被填充。 我想,如果我從1迭代到的時間步數,在步驟大小nBins-Max在循環:

for tt = 1:nBins_max:nTimeSteps 

這似乎並沒有什麼我後我。 我也希望在最後從系統中移除墨水。對於每一轉我想能夠去除在每個旋轉墨水的百分比,因此不會在系統中停留(好像它是被印刷到紙張上,並帶走)。 希望有人能理解這一點,或許就如何對我的問題的一方或雙方進行了一些建議。

+0

我正在嘗試以更友好的方式重寫這個問題,希望能吸引更多的關注 - 所以我想刪除這篇文章!很多感謝輸入的高性能標記,但它是非常有用的,由於我的問題最初的模糊性,我不認爲它符合我的要求! – richyo1000 2013-03-13 12:30:16

回答

1

你的解釋不完全匹配你的代碼(或反之亦然,如果你喜歡),所以我不完全知道你想要做什麼,但下面可以幫助你爭取解決或向您表達問題更清楚。

  • 載體rollers(2).ink具有1行和216列,所以操作如rollers(2).ink(98:103) = something不通過至103還請注意,載體的該元件98被初始化爲0更新行98,它不包括在元件初始化爲1
  • 你寫,你要更新範圍在矢量元素,然後寫一個循環語句for tt = 1:nBins_max:nTimeSteps其跨過的時間步長的矢量。當然你想寫一些像rollers(2).ink(99:103) = new_values
  • 至於在每次旋轉去除從滾筒墨,你可以只執行一條線如rollers(2).ink = rollers(2).ink * 0.975每次旋轉;顯然你會希望用我選擇的每一個旋轉的替換率來替換2.5%的移除率,而不管什麼都適合你的模擬。
+0

感謝您的指點!用於輥子(2).ink載體被轉置在輸出 - 遺憾的混亂,其實我忘記,當我看可變輥子(2).ink它實際上有段上的值98:103所以連接似乎做我所期望的,我只是喜歡它爲每一次革命做到這一點,目前它不!對於起飛(去除)因素我也有類似的想法。我考慮它的方式,起飛應該實際上代表已經打印的墨水量,因此不再可用於模擬器 – richyo1000 2013-03-08 10:53:14

相關問題