Creating [-1 1] matrix given length n
1 view (last 30 days)
Show older comments
Alice Zurock
on 22 Mar 2020
Edited: Ameer Hamza
on 24 Mar 2020
Hi,
I want to create N length long [-1 1] matrix,
For example: Length=2
Output:
[ 1 1
1 -1
-1 1
-1 -1]
Length = 3
Output:
[ 1 1 1
1 1 -1
1 -1 1
-1 1 1
......
-1 -1 -1]
And so on, How can do that?
0 Comments
Accepted Answer
Sriram Tadavarty
on 22 Mar 2020
Hi Alice,
You can try the following:
len = 2;
N = 2^len;
bi = de2bi(N-1:-1:0); % Convert decimal numbers in to binary
bi(bi==0) = -1; % Replace the values of 0 with -1
Hope this helps.
Regards,
Sriram
1 Comment
Sriram Tadavarty
on 22 Mar 2020
Hi Alice,
If the answer is helpful for the question asked, do accept the answer. I suggest you to start a new question for this. Anyhow i can provide some insights of how this can be done here.
To perform the circular shift, you can use circshift function. To iterate the same for multiple times, use a for loop.
For example, for row selected
row = [1 -1 1];
crow = circshift(row,1); % This will provide the value of [1 1 -1]
% Now perform the element wise matrix multiplication and add them
out = sum(row.*crow); % This will give you the -1
% Based on out, display the string accordingly
Hope this helps.
Regards,
Sriram
More Answers (1)
Ameer Hamza
on 22 Mar 2020
Edited: Ameer Hamza
on 22 Mar 2020
See combvec():
Length = 3;
x = mat2cell(repmat([1 -1], Length, 1), ones(Length,1), 2);
out = combvec(x{:})';
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!