ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})
필드 이름이 있는 1x2 구조 배열로 저장되는 MATLAB 구조를 만들어야 합니다 . 호출하면 ds.name
출력이 생성됩니다.
ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'
출력에서 작은따옴표를 확인하세요. 그것들은 중요합니다. 즉, 다음 변수를 사용하여 위에서 언급한 구조를 만들어야 합니다. X = [1x46 char] [1x47 char]
즉, 1x2 셀은 실제로 문자열의 셀 배열이라고 생각합니다. 무엇보다도 다음을 시도했습니다.
Y = cell2struct(X, 'name', 1)'
결과적으로 필드 이름이 있는 1x2 구조 배열이 생성되지만 Y를 호출하면 출력이 생성됩니다.
Y.name
ans = my_name_is
ans = matlab_thining_hair
출력의 작은따옴표가 누락되었으며 Y와 ds가 모두 필드 이름이 있는 1x2 구조체 배열이지만 필드 값의 형식이 동일하지 않으며 구조의 바이트 크기도 다양합니다. 본질적으로 필요한 것은 셀 배열 필드가 있는 구조체입니다. 여기서 기본적으로 각 셀 배열은 고유한 문자 배열로 구성됩니다. 필드 값을 문자 배열로 형식화하는 방법이 궁금합니다. 어떤 도움이라도 주시면 감사하겠습니다.
답변1
귀하의 예에서 불일치는 원래 예 ds.name의 각 요소가 문자(예: {'내 이름은'})를 포함하는 셀인 반면 X의 각 요소는 문자(예: '내 이름은')라는 것입니다. X의 각 요소 유형을 char에서 char를 포함하는 셀로 변경하면 원하는 동작을 얻을 수 있습니다.
이는 아래 예에 나와 있습니다.
X2={{'my_name_is'},{'matlab_thinning_hair'}};
Y = cell2struct(X2, '이름', 1);
Y.이름
답변 =
'내 이름은'
답변 =
'matlab_thinning_hair'
요소를 색인화하고 다음을 수행하여 변수 X에 대해 이를 달성할 수 있습니다.
X2{1}={X{1}};
X2{2}={X{2}}
MATLAB 도움말여기이 주제에 대해서는 매우 도움이 됩니다.