2011-09-10 5 views
0

나는 문제가있다, 나는 매트릭스의 알려지지 않은 숫자를 알려주는 matlab 함수에서 일하고있다. 문제는 내가 그들을 어떻게 저장할 수 있는지 모른다는 것입니다. [A,B,C]과 같은 구조가 필요합니다. 각 항목은 다른 크기와 다른 행렬이 될 수 있습니다.matlab에 매트릭스의 알려진 번호를 저장하는 방법?

어떻게 만드시겠습니까?

답변

1

cell array이 필요합니다. 다음을 고려하십시오 :

A = {[1,2,3;4,5,6],rand(20,'single'), 'hello world'} 

A = 

[2x3 double] [20x20 single] 'hello world' 

A은 다양한 유형의 데이터와 다양한 매트릭스 크기를 보유하는 셀 컨테이너입니다.

A(1:2) 
ans = 

[2x3 double] [20x20 single] 

항상 배열과 동일한 데이터 형식을 반환 것이다 괄호 어떤 배열 색인 : 그래서 같은 인덱스 특히 "세포"를 사용 괄호에. 여기에 두 개의 셀 배열이 있습니다. 셀 내용에 액세스하려면 괄호 대신 괄호를 사용하십시오. 예를 들어,

A{1} 
ans = 

1  2  3 
4  5  6 

는 셀 내부에 색인을 설정하려면, 그래서 같은 중괄호와 함께 괄호를 사용

A{1}(2,1:2) 
ans = 

4  5 

당신은 Mathworks blog에서 셀 어레이, 그 용도 및 인덱싱에 대한 자세한 내용을보실 수 있습니다.

3

는 다음과 같은 기능, 그것은 입력 인수에 따라 출력을 다른 수의 반환 고려 :

num = 5; 
X = cell(num,1); 
[X{1:num}] = myFunc(num);  %# [A,B,C,D,E] = myFunc(5) 

: 이제

function varargout = myFunc(num) 
    for i=1:num 
     varargout{i} = rand(i+2,i); 
    end 
end 

을 같은 함수를 호출하고 모든 출력을 수신하기를, 다음을 시도 결과 :

>> X 
X = 
    [3x1 double] 
    [4x2 double] 
    [5x3 double] 
    [6x4 double] 
    [7x5 double] 

개별 매트릭스에 액세스 할 수 있습니다. h 세포 배열 표기법 :

>> X{5} 
ans = 
     0.75493  0.68342  0.19705  0.80851  0.67126 
     0.24279  0.70405  0.82172  0.75508  0.43864 
     0.4424  0.44231  0.42992  0.3774  0.8335 
     0.6878  0.019578  0.88777  0.21602  0.76885 
     0.35923  0.33086  0.39118  0.79041  0.16725 
     0.73634  0.42431  0.76911  0.9493  0.86198 
     0.39471  0.27027  0.39679  0.32757  0.98987 
관련 문제