I want to create a binary matrix with a variable dimensions

I want to create a binary matrix of dimension k x M where k and M are user defined.(k is the number of rows and M is the number of column). And number of zeros and ones in each row are user defined. Also this binary matrix should be a function.

3 个评论

What have you done so far? What specific problems are you having with your code?
for kk=1:lnk
m = input('How many zeroes do you need \n');
n = input('how many ones do you need\n');
lnk=nchoosek(m+n,n);
i=n+m;
if i<=1
disp('size of binary sequence is out of range');
else
%Binary sequence contains m zeros and n ones in any order
x1=zeros(1,m);
x1(randn(i,n))=1
%count down the number of switches in such a Binary sequence x1;
end
end
This is what i have done but it creates only arrays i dont understand how to make it into a matrix. and then convert into a function

请先登录,再进行评论。

回答(1 个)

k=10;
M=50;
O=randi(M+1,k)-1;%number of ones per row (number of zeros per row= 50 - O)
for n=1:k
m=[ones(1,O(n)),zeros(1,M-O(n))];
Matrix(n,:)=m(randperm(M));
end

2 个评论

if i change the value of k,M then it shows the error that left side matrix dimension is not equal to right side.
You just need to clear Matrix or set Matrix = [ ] at the beginning.
k=10;
M=50;
Matrix=[];
O=randi(M+1,k)-1;%number of ones per row (number of zeros per row= 50 - O)
for n=1:k
m=[ones(1,O(n)),zeros(1,M-O(n))];
Matrix(n,:)=m(randperm(M));
end

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by