MATLAB 구조에 문자열의 셀형 배열


1

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 구조 체형 배열이지만 필드 값의 형식이 동일하지 않으며 구조의 바이트 크기도 다양합니다. 본질적으로 내가 필요한 것은 셀 배열 필드가있는 구조체이며, 각 셀 배열은 고유 한 char 배열로 구성됩니다. 필드 값을 문자 배열로 형식을 지정하는 방법에 대한 손실이 있습니까? 도움을 주시면 감사하겠습니다.

답변:


1

예제의 불일치는 원래 예제 ds.name의 각 요소가 문자를 포함하는 셀 (예 : { 'my name is'}) 인 반면 X의 각 요소는 문자입니다 (예 : 'my name is'). X의 각 요소 유형을 문자에서 문자를 포함하는 셀로 변경하면 원하는 동작을 얻을 수 있습니다.

아래 예에 나와 있습니다.

X2 = {{ 'my_name_is'}, { 'matlab_thinning_hair'}};

Y = cell2struct (X2, '이름', 1);

Y. 이름

ans =

'내 이름은'

ans =

'matlab_thinning_hair'

요소를 통해 인덱싱하고 다음을 수행하여 변수 X에 대해 이것을 달성 할 수 있습니다.

X2 {1} = {X {1}};

X2 {2} = {X {2}}

여기 의 matlab 도움말 이이 주제에 매우 유용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.