2011-03-04 4 views
4

나는 16X16 매트릭스 있습니다. 256X256 행렬에 추가해야합니다. 누구든지 0으로 나머지를 채우는 256X256이 16X16 행렬을 만드는 방법을 도울 수 있습니까?제로 패딩 매트릭스

답변

0

원래해야 할 일은 원본 256x256 매트릭스를 원시 상태로 유지하려는 경우 256x256 인 출력 매트릭스를 만드는 것입니다. 그런 다음 입력 된 256x256 행렬의 값을 출력 행렬로 이동하십시오. 다음 단계는 출력 행렬에 16x16 요소를 추가하는 것입니다.

하지만 실제로 누구나이 문제에 답하기 전에 16x16 매트릭스가 256x256 매트릭스와 어떤 관련이 있는지 설명해야합니다. 즉, 16x16 행렬의 첫 번째 요소 (0,0)가 256x256 행렬의 첫 번째 요소 (0,0)에 추가됩니까? 어때요? (0, 1)의 두번째 요소는 어떨까요? 그것이 어디에서 추가 될지 알고 있습니까? 16x16 매트릭스의 요소 (1, 0)은 무엇입니까? 256x256 매트릭스의 어떤 요소가 추가됩니까? 일단 이것을 이해하면 몇 가지 루프를 코딩하여 16x16 매트릭스의 각 요소를 적절한 256x256 출력 매트릭스 요소에 추가 할 수 있습니다.

+3

다른 언어와 달리 MATLAB은 0이 아닌 1로 색인을 시작합니다. – zellus

3
padded = zeros(256,256); 
data = rand(16,16); 
padded(1:16,1:16) = data; 
9

원본 크기 이외의 요소에 무언가를 지정하면 매트랩이 자동으로 0으로 채 웁니다.

>> A = rand(16, 16); 
>> A(256, 256) = 0; 
>> size(A) 
ans = 
    256 256 
3

그래서이 질문에 실제로 답변하지는 않지만 내가 준 유스 케이스에 대한 답변이라고 생각합니다. 당신이 16 × 16에서 소형 다시 경우 어떻게 할 당신이 가진 것 여분 65000 정도 복식을 할당

big = ones(256, 256); 
small = ones(16, 16); 
big(1:16, 1:16) = big(1:16, 1:16) + small; 

이 방지 : 당신은 큰 행렬의 왼쪽 상단 모서리에 작은 매트릭스를 추가 할 가정 256x256.

+1

추가 접근없이 16x16 블록에 행렬을 추가 할 수 있으므로 올바른 방법입니다 변수 할당. 256x256 행렬은 크지 않지만 미래에 기억해야 할 좋은 팁입니다. –

3

Matlab에서 padarray 기능을 사용하십시오. 도움말을 사용하여 매개 변수를 알 수 있습니다.