2012-06-03 3 views
3

nxn의 매트릭스가 필요합니다. 첫 번째로는 pxp에 1이 있고 나머지는 0입니다. 나는 세포를 가로 질러 그것을 할 수 있으므로 그것을 할 방법을 묻지 않고있다. "MATLAB"방법을 사용하여 내장 함수를 사용하고 루프 등을 피할 수 있습니다.MATLAB 0으로 매트릭스 확장하기

더 명확하게하려면;

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

그것을 할 가능성이 이상의 우아한 해결책이있다, 그래서 가장 짧은 가장 읽을 수있는 하나 답을 받아 들일 것입니다 :

는 예상 된 결과가 n=4 and p=2,

을 할 수 있습니다.

P. 질문 제목은 약간 부적합 해 보입니다. 첫 번째 접근 방식은 1과 1을 사용하여 pxp 행렬을 작성한 다음 0을 사용하여 nxn으로 확장하므로 제목을 붙였습니다.

답변

9

대답은 제로의 매트릭스를 생성하고, 다음 색인 사용 1로의 일부를 설정 : 당신이 확장을 주장하는 경우

n = 4; 
p = 2; 
x = zeros(n,n); 
x(1:p,1:p) = 1; 

, 당신은 사용할 수 있습니다 : 예를 들어

+0

'padarray (들 (P, P), NP를 NP, 0'포스트 ')'또한 작동 'padarray '기능을 가르쳐 주셔서 감사합니다. –

+0

NB :'padarray'는 Image Processing Toolbox가 필요합니다. – rayryeng

2

수평 및 수직으로 연결하여 쉽게 매트릭스를 만들 수 있습니다.

,515,
n = 4; 
p = 2; 
MyMatrix = [ ones(p), zeros(p, n-p); zeros(n-p, n) ]; 
6

제로와 매트릭스를 확장하는 또 다른 방법 :

>> p = 2; n = 4; 
>> M = ones(p,p) 
M = 
    1  1 
    1  1 
>> M(n,n) = 0 
M = 
    1  1  0  0 
    1  1  0  0 
    0  0  0  0 
    0  0  0  0 
+0

색인 생성과 함께 할당 후 트릭을 좋아합니다. +1. – rayryeng

1
>> p = 2; n = 4; 
>> a = [ones(p, 1); zeros(n - p, 1)] 

a = 

    1 
    1 
    0 
    0 

>> A = a * a' 

A = 

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