Creating a 2-D matrix from a 1-D Array?
조회 수: 52 (최근 30일)
이전 댓글 표시
Considering that I have an array of A = [150 11 12 134 130 152]. How to replicate these elements in this array to get a matrix of size 256*256.
댓글 수: 0
채택된 답변
Matthew Eicholtz
2013년 7월 5일
Based on your comment to David's answer, how about this?
r = 256; % number of desired rows
c = 256; % number of desired columns
Avec = repmat(A(:),ceil(r*c/length(A)),1); % vector of repeated A values
Anew = reshape(Avec(1:r*c),c,r)'; % new 2-D matrix of size rxc
댓글 수: 0
추가 답변 (2개)
David Sanchez
2013년 7월 5일
You do not make clear how you want to replicate your data, but this is a way:
A = [150 11 12 134 130 152];
L = numel(A); % number of elelments in A
M = zeros(256); % initialize the matrix
% assigin values to first row
for k = 0:floor(256/L)
M( 1 , (k*L+1):((k+1)*L) ) = A;
end
% make sure you only have your 256 columns
M = M(:,1:256);
% copy first row to the rest of rows
for k=2:256
M(k,:) = M(1,:);
end
Andrei Bobrov
2013년 7월 5일
편집: Andrei Bobrov
2013년 7월 5일
out = A(randi(numel(A),256,256));
or
m = 256;
n = 256;
A1 = repmat(A,1,ceil((m+n-1)/numel(A)));
out = hankel(A1(1:m),A1(m:m+n));
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!