4
나는 다음과 같은 문제에 직면하고있어
A.B(1,1).x = 'string'
A.B(1,1).y = 12
A.B(1,2).x = []
A.B(1,2).y = []
A.B(1,3).x = 'string2'
A.B(1,3).y = 4
을 그리고 난,이 구조에서 빈 2. 행을 제거하고 싶은에 있도록 끝 나는 (1,1)과 (1,3)을위한 필드를 얻는다. 셀로 변환하고 제거한 다음 구조로 돌아가려고했지만 필드의 이름을 다시 입력해야했습니다. 어떻게 할 수 있습니까? 구조물에서의 전환없이 할 수 있습니까?
tia! (대신 any를 사용 [0 1 0]
또는 모든 필드가 비어있는 경우 검사
empty_elems = arrayfun(@(s) all(structfun(@isempty,s)), A.B);
:
empty_elems = arrayfun(@(s) isempty(s.x) & isempty(s.y),A.B)
반환 :
x, y, z 등과 같은 필드가 더 있으면이 조건을 작성하는 효율적인 방법은 무엇입니까? 때문에 하나의 조건 isempty (sx) 그것은 빈 필드를 제거하지 않습니다 – beginh
어쩌면 [structfun] (http://www.mathworks.nl/help/techdoc/ref/structfun.html) 적용 할 수 있습니다 ... –
실제로 나는 다음에 대해 생각해 보겠습니다. 처음에는 AB 전체에 데이터가 있습니다. 그런 다음 A.B.() .y> 3에 대한 조건을 적용하고, 그렇다면 새로운 구조로 저장합니다.이 빈 A.B. (1,2)가 있습니다 (A.B. (1,2) .y = 2라고 가정 해 봅시다). 한 번에 구조의 빈 필드를 피하는 더 좋은 방법이 있을까요? – beginh