matlab
매트랩 인덱스 행렬 만들기
게으른 the lazy
2023. 2. 26. 02:42
매트랩에서 기본으로 제공하는 방법은 symbolic을 활용하는 것이다.
>> A = sym('A', [2, 4])
A =
[A1_1, A1_2, A1_3, A1_4]
[A2_1, A2_2, A2_3, A2_4]
숫자로 구성된 행렬을 만들고 싶다면, 함수를 만들어서 써야 한다. 아래는 함수 코드와 실행 결과이다. cell unpacking이 활용되었다.
function arr = idx_mat(varargin)
arr_cell = cell(nargin, 1);
idx = cell(nargin, 1);
for i=1:nargin
idx{i} = 1:varargin{i};
end
[arr_cell{:}] = ndgrid(idx{:});
arr = zeros(varargin{:});
for i=1:nargin
arr = arr + 10^(nargin-i)*arr_cell{i};
end
end
>> idx_mat(3, 4)
ans =
11 12 13 14
21 22 23 24
31 32 33 34
>> idx_mat(3, 4, 2)
ans(:,:,1) =
111 121 131 141
211 221 231 241
311 321 331 341
ans(:,:,2) =
112 122 132 142
212 222 232 242
312 322 332 342