2016-08-01 6 views
0

테이블 끝에 행을 추가하려고합니다. 예를 들어 테이블이 비어 선언MATLAB의 테이블에 행 삽입

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'}; 
Age = [38;43;38;40;49]; 
Height = [71;69;64;67;64]; 
Weight = [176;163;131;133;119]; 
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; 
Tab=table; 
s=struct; 
for i=1:5 
    s.name=LastName{i}; 
    s.age=Age(i); 
    s.heigt=Height(i); 
    s.weight=Weight(i); 
    s.BP=BloodPressure(i); 
    temp=struct2table(s); 
    Tab(end+1,:)=temp; 
end 

, 그것은 1 행을 추가하지만, for 루프의 두 번째 반복에서 오류 메시지가 아래에 있습니다 :이 때문에의 발생을 이해

Subscripted assignment dimension mismatch for table variable 'name'. 

변수 이름은 두 x 째 반복에서 더 많은.자를가집니다. 이 방법을 구현할 수 있습니까?

이것은 내 문제를 설명하기 위해 생성 한 샘플 코드입니다. 내 실제 코드에서 문제는 비슷하지만 수정할 수없는 다른 함수에서 구조체 유형 변수가 반환됩니다.

답변

3

먼저 전체 구조 배열 정의 :

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'}; 
Age = [38;43;38;40;49]; 
Height = [71;69;64;67;64]; 
Weight = [176;163;131;133;119]; 
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; 
s = struct('name',LastName,'age',num2cell(Age),... 
    'heigt',num2cell(Height),... 
    'weight',num2cell(Weight),... 
    'BP',num2cell(BloodPressure,2)); 

그리고 테이블로 변환 :

Tab = struct2table(s); 

결과 :

Tab = 
     name  age heigt weight  BP  
    __________ ___ _____ ______ __________ 
    'Smith'  38  71  176  124  93 
    'Johnson'  43  69  163  109  77 
    'Williams' 38  64  131  125  83 
    'Jones'  40  67  133  117  75 
    'Brown'  49  64  119  122  80 
+0

당신은이 모든 나를 죽이고있어를 루프 .... 구조체 ('이름', 성, '나이', 나이, '높이', 높이, '무게', 무게, '혈압', BloodPressure) ' – Suever

+0

OP는 데이터에 대해 '알고'있지만 대답을 편집하는 중이었습니다.하지만 제안을 그대로 받아 들일 수는 없으며 모든 데이터로 구조가 중첩됩니다. – EBH

+0

좋은 결과. 또한 'BloodPressure (i, :)'를 조정하여 두 값을 잡아낼 수도 있습니다. – Suever