how to swap some vector value?
    12 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Dear all
I have the following vector 
S=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...... ]
what I would like to do is to change  1 and 2 position to be after 10 then to 11 and 12 after 20 and etc.
so S will be like S= [3 4 5 6 7 8 9 10 1 2  13 14 15 16 17 18 19 20 11 12 ....]
I hope that the problem is well explained.
Thanks a lot in advance for your contribution
0 Commenti
Risposte (3)
  Star Strider
      
      
 il 24 Ago 2021
        S=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
Sr = reshape(S,10,[])
Src = circshift(Sr,-2,1)
Result = reshape(Src,1,[])
Note —  ‘S’ must always have a length that is an integer multiple of 10 for this to work.  An alternative to reshape if that is not the situation is the Signal Processing Toolbox buffer function, however the results of the last column might not be the desired result.  
.
0 Commenti
  Wan Ji
      
 il 24 Ago 2021
        
      Modificato: Wan Ji
      
 il 24 Ago 2021
  
      A general answer is
S = 1:100; %
count = 1;
copyLength = 2; %
copyStep = 10; % copyStep>copyLength
while count<=numel(S)-copyLength
    if(count==1)
        copySeg = S(count:count+copyLength-1);
        S(count:count+copyLength-1) = [];
        count = count + copyStep - copyLength;
    else
        copyTemp = S(count:count+copyLength-1);
        S(count:count+copyLength-1) = copySeg;
        copySeg = copyTemp;
        count = count + copyStep;
    end
end
if(count-1<=numel(S))
    nLen = count + copyLength -1 - numel(S);
    S = [S, ones(1,nLen)];
    S(count:count+copyLength-1) = copySeg;
end
0 Commenti
Vedere anche
Categorie
				Scopri di più su Simulink Functions in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



