Creating [-1 1] matrix given length n

1 次查看(过去 30 天)
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?

采纳的回答

Sriram Tadavarty
Sriram Tadavarty 2020-3-22
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 个评论
Sriram Tadavarty
Sriram Tadavarty 2020-3-22
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

请先登录,再进行评论。

更多回答(1 个)

Ameer Hamza
Ameer Hamza 2020-3-22
编辑:Ameer Hamza 2020-3-22
See combvec():
Length = 3;
x = mat2cell(repmat([1 -1], Length, 1), ones(Length,1), 2);
out = combvec(x{:})';

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by