Main Content

orderfields

구조체형 배열의 필드 정렬

설명

예제

S = orderfields(S1)S1의 필드를 이름을 기준으로 정렬합니다.

필드 이름은 문자, 숫자, 밑줄만 포함할 수 있으므로 이 구문은 필드 이름을 ASCII 순서로 정렬합니다. 모든 대문자는 모든 소문자 앞에 옵니다.

예제

S = orderfields(S1,S2)는 필드의 순서가 S2의 필드 순서와 일치하도록 다시 정렬된 S1의 복사본을 반환합니다. 입력 구조체형 배열 S1S2는 서로 동일한 필드 이름을 가져야 합니다.

예제

S = orderfields(S1,C)는 입력 배열 C에 지정된 이름의 순서와 일치하도록 정렬합니다. S1의 모든 필드의 이름이 C에 한 번씩 나타나야 합니다.

예제

S = orderfields(S1,P)는 치환 벡터 P로 지정된 순서와 일치하도록 정렬합니다.

S1n개의 필드가 있으면 P1부터 n까지의 정수가 임의의 순서로 정렬된 요소를 갖습니다. 예를 들어, S1에 3개의 필드가 있고 P[3 1 2]이면 S1의 첫 번째 필드는 출력값 S의 첫 번째 필드입니다. 이 구문은 여러 개의 구조체형 배열의 순서를 동일한 방식으로 정렬할 때 유용합니다.

예제

[S,Pout] = orderfields(___)는 치환 벡터도 반환합니다. Pout1부터 n까지의 정수가 필드 순서의 변경을 나타내는 순서로 정렬된 요소를 갖습니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.

예제

모두 축소

여러 개의 필드를 갖는 구조체를 만듭니다.

S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
    b: 1
    B: 2
    a: 3
    A: 4

필드의 순서를 정렬합니다. 이 구문은 이름을 기준으로 ASCII 순서대로 필드를 정렬합니다.

S = orderfields(S1)
S = struct with fields:
    A: 4
    B: 2
    a: 3
    b: 1

동일한 필드를 서로 다른 순서로 갖는 두 개의 구조체를 만듭니다. 필드 이름은 같지만 필드 값은 다릅니다.

S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
    b: 1
    B: 2
    a: 3
    A: 4

S2 = struct('a',0,'b',20,'B',10,'A',0)
S2 = struct with fields:
    a: 0
    b: 20
    B: 10
    A: 0

S1의 필드 순서가 S2의 필드 순서와 일치하도록 정렬합니다.

S = orderfields(S1,S2)
S = struct with fields:
    a: 3
    b: 1
    B: 2
    A: 4

구조체를 만듭니다.

data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x)'

필드 이름을 셀형 배열에 나열하여 필드의 순서를 정렬합니다.

C = {'title','x','y'};
data = orderfields(data,C)
data = struct with fields:
    title: 'y = sin(x)'
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)

구조체를 만듭니다.

data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)
    title: 'y = sin(x)'

필드의 원래 위치를 다른 순서로 나열하여 필드의 순서를 정렬합니다. 예를 들어, 세 번째 필드가 출력 구조체의 첫 번째 필드가 되도록 이동해 보십시오.

P = [3 1 2];
data = orderfields(data,P)
data = struct with fields:
    title: 'y = sin(x)'
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)

구조체를 만듭니다.

data1.x = linspace(0,2*pi);
data1.y = sin(data1.x);
data1.title = 'y = sin(x)';

orderfields 함수를 사용하여 구조체를 다시 정렬합니다. 새 필드 순서를 치환 벡터 Pout에 저장합니다.

[S,Pout] = orderfields(data1,{'title','x','y'})
S = struct with fields:
    title: 'y = sin(x)'
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 0.9224 ... ] (1x100 double)

Pout = 3×1

     3
     1
     2

동일한 필드를 갖는 두 번째 구조체를 만듭니다.

data2.x = data1.x;
data2.y = cos(data2.x);
data2.title = 'y = cos(x)';

Pout를 사용하여 data2의 필드를 다시 정렬합니다. 동일한 필드 이름을 갖는 구조체가 여러 개 있는 경우 Pout를 사용하여 모든 구조체를 동일한 방식으로 다시 정렬할 수 있습니다.

S2 = orderfields(data2,Pout)
S2 = struct with fields:
    title: 'y = cos(x)'
        x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 1.9675 ... ] (1x100 double)
        y: [1 0.9980 0.9920 0.9819 0.9679 0.9501 0.9284 0.9029 0.8738 0.8413 0.8053 0.7660 0.7237 0.6785 0.6306 0.5801 0.5272 0.4723 0.4154 0.3569 0.2969 0.2358 0.1736 0.1108 0.0476 -0.0159 -0.0792 -0.1423 -0.2048 -0.2665 -0.3271 ... ] (1x100 double)

입력 인수

모두 축소

입력 구조체로, 구조체형 배열로 지정됩니다.

구조체를 기준으로 하는 필드 순서로, 구조체형 배열로 지정됩니다. S2S1과 동일한 필드를 갖지만 필드를 다른 순서로 지정합니다.

이름을 기준으로 하는 필드 순서로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. C의 이름은 S1의 필드 이름과 일치해야 합니다.

번호를 기준으로 하는 필드 순서로, 숫자형 벡터로 지정됩니다. 번호는 1부터 n까지의 정수여야 합니다. 여기서 nS1의 필드 개수입니다.

출력 인수

모두 축소

다시 정렬된 구조체로, 구조체형 배열로 반환됩니다. SS1과 동일한 필드를 갖지만 순서는 다를 수 있습니다.

출력 필드 순서로, 숫자형 벡터로 반환됩니다. Pout의 요소는 1부터 n까지의 정수입니다. 여기서 nS1의 필드 개수입니다. 정수로 구성된 순열은 필드 순서의 변경을 나타냅니다.

  • orderfields는 최상위 수준 필드만 정렬합니다. 이것은 재귀적이지 않습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨