Suppose i have a vector x=[1 1 1 1 0 0 1 1] i want 1 bit shifting such that the output is x1=[0 1 1 1 1 0 0 1] x2=[0 0 1 1 1 1 0 0]
How to do this??

 Réponse acceptée

KL
KL le 20 Oct 2017

0 votes

If you have access to Fixed-Point Designer toolbox, you could use bitsll

9 commentaires

Actually i tried this function, w=[1 1 1 1 1 1 1 1]; k= bitsll(w,1);
For this output for k is: k =
2 2 2 2 2 2 2 2
This same is for circshift(), bitshift() and so on. How to solve this problem??
KL
KL le 20 Oct 2017
Modifié(e) : KL le 20 Oct 2017
Wait! I got you all wrong. Yours simply a vector with 1s and 0s. I misread them as binary. "bit shifting" is not the right word.
Anyway, try the following code,
x=[1 1 1 1 0 0 1 1];
movex = @(z,a) [zeros(1,a) z(1:end-a)];
x1 = movex(x,1)
x2 = movex(x,2)
Darsana P M
Darsana P M le 20 Oct 2017
Thanks a lot. Now it seems more better. Please do help me in 1 point. I did not understand this line : movex = @(z,a) [zeros(1,a) z(1:end-a)];
If i need to do left shift, what must i do?
[zeros(1,a) z(1:end-a)]
if you read this, it adds 'a' number of zeros in the beginning and then neglects 'a' number of elements from z from behind. Do you understand? To do it the opposite way, you just need to modify it a tiny bit. Why don't you try and show me with how you tried?
Darsana P M
Darsana P M le 21 Oct 2017
[z(1:end-a) zeros(1,a)] Is this the way?
Almost, but this time, you'd want to neglect the element from the beǵinning, so it should be,
[z(a+1:end) zeros(1,a)]
Darsana P M
Darsana P M le 22 Oct 2017
On more doubt, x1 dimension is 1:8 but dimension of x2 redues to 1:7 For comparison purposes both dimensions must be same right, so what must be done?
KL
KL le 22 Oct 2017
All of it should be of the same size, yes! If you used the code I showed you above, you'd get the result of exactly the same size.
Darsana P M
Darsana P M le 22 Oct 2017
Yes. thank you sir

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 20 Oct 2017
x1=zeros(size(x));
x1(2:end)=x(1:end-1)

4 commentaires

Darsana P M
Darsana P M le 20 Oct 2017
Thanks for the response. But this case cannot be done for all the cases know? How can we generalize this shifting operation??
Matt J
Matt J le 20 Oct 2017
Why not?
Darsana P M
Darsana P M le 21 Oct 2017
Then could you please exlain these steps: x1=zeros(size(x)); x1(2:end)=x(1:end-1); By the first step it means adding zeros according to the size of x. But i didnot understand the second step.
Anu
Anu le 25 Août 2018
i want this code to execute for every iterations.I need to run it for 64 times and i need to display from 1to 64.how could i do this?

Connectez-vous pour commenter.

Tags

Commenté :

Anu
le 25 Août 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by