2013-03-06 46 views
1

我正在努力與一些邏輯/語法.... 我有一個模擬程序,它決定了墨跡厚度,因爲它通過一些滾筒。我想添加一些功能,但似乎無法訪問我想要的1xN向量中的元素。 我想我的問題就出在這裏的某個地方:更新向量中的單個元素

% # Iterate through timesteps 
for tt = 2:nTimeSteps 
% # Fill first roller with ink 
rollers(1).ink = ones(1,nBins(1)); 

% # 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 
end 

,其中第一輥「填充墨水」的一部分 - 輥被分成整數部分(nBins),我想只有元素13, 14和15上有墨水(其餘爲零)。 行向量長度爲​​1x95。 我似乎無法做到這一點。我已經試過各種方法,最有前途的我認爲是創造零矩陣其次的東西,如:

rollers(1).ink(13) = 1; 

等等 的「墨水填寫」部分緊隨其後。 這似乎沒有做任何事情(甚至沒有發生錯誤) 我也有類似的問題與程序的輸出 - 我想只接受油墨的一部分滾筒表面。 70%) 對我來說,主要的挫折是我知道我想操縱的數據就在那裏 - 我只是無法理解它!一如既往,任何建議非常感謝! 預先感謝

回答

1

有幾種方法以產生具有全零一個1x95矢量除了元件13,14和15:

隨着一個臨時變量:

I = zeros(1, 95); 
I(13 : 15) = 1; 

直接使用級聯:

[zeros(1, 12), ones(1, 3), zeros(1, 80)] 

我會去串聯:

rollers(1).ink = [zeros(1, 12), ones(1, 3), zeros(1, 80)]; 
+0

@ Florian Brucker非常感謝!我搜索了很多谷歌網頁(和SO!)尋找這種語法。它讓我直接訪問正是我想要的元素!謝謝你,享受一天的其餘時間! – richyo1000 2013-03-06 13:21:00