2014-09-15 6 views
2

예를 들어 내가 가지고 있다면 :MATLAB에서 1과 0의 행렬을 작성

어떻게

A = 5 
B = randi([0 1], 5, 5) 

나는 무작위로 하나의의 5 × 5 행렬을 만드는 것과 0 ' 행렬을 제한하여 A의 값으로 1의 양만 가질 수 있습니까?이 경우 5 1입니까?

여기

답변

7

제로의 행렬, B는, 필요한 크기로 만든 후, B의 임의의 위치에 1 개

A = 5; 
B = zeros(5,5); 
B(randperm(numel(B),A)) = 1 

출력 여기서

B = 

    0  1  0  0  0 
    0  0  0  0  0 
    0  0  0  0  1 
    1  0  1  0  1 
    0  0  0  0  0 
1

로 변경하여 사용하는 다른 솔루션 datasample에서 @ RTL의 솔루션과 마찬가지로 먼저 0의 행렬을 만들고 주어진 수의 행을 추가합니다.

clc; 
clear all; 

A = 5; 
B = zeros(5,5); 

y = datasample(1:size(B,1)*size(B,2),A) % Randomly select 5 (i.e. A) linear indices which will be replaced by 1. 

B(y) = 1 
01 23,516,

Y =

12 17  1 22 14 

B =

1  0  0  0  0 
0  0  1  1  1 
0  0  0  0  0 
0  0  1  0  0 
0  0  0  0  0 
관련 문제