2016-11-28 230 views

回答

3

有很多方法可以做到這一點,一個是使用模屬性 - 因爲你每三個元素之後:

a = rand(1,3000); %Generate a random vector named a 
inda = 1:size(a,2); %Generate the Index Vector of a 

third = mod(inda,3) ==0; %Set every third element to 1 and everything else to 0 
result = a.*third %Vector element by element product 

一號線是:

result = a.*(mod(1:size(a,2),3) ==0); %change 3 to any Nth element you want. 

另一個實際的方法是重塑 - 但是這需要你的矢量長3 * N,否則會變得凌亂

+0

不存在一個在線解決方案的解決方案?否則,在Java中編寫for循環將需要的代碼少於此... – mercury0114

+0

@ mercury0114這實際上是1行解決方案,我想還有其他1行。 – GameOfThrows

+1

@ mercury0114你不需要它,檢查更新的答案,對不起,我正在爲另一個問題寫另一個答案 – GameOfThrows

4

一個選項是使用indexing(在許多其他拉nguages)。這裏是一個新的變量的解決方案:

>>> a = [1, 2, 3, 4, 5, 6] 
a = 

    1 2 3 4 5 6 

>>> r = zeros(size(a)) 
r = 

    0 0 0 0 0 0 

>>> r(3:3:end) = a(3:3:end) 
r = 

    0 0 3 0 0 6 

這裏是「到位」

>>> a = [1, 2, 3, 4, 5, 6] 
a = 

    1 2 3 4 5 6 

>>> a([1:3:end 2:3:end]) = 0 
a = 

    0 0 3 0 0 6 
相關問題