orderfields
구조체형 배열의 필드 정렬
구문
설명
예제
이름을 기준으로 필드 정렬하기
여러 개의 필드를 갖는 구조체를 만듭니다.
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 2.0309 2.0944 ... ]
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 0.8960 0.8660 ... ]
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 2.0309 2.0944 ... ]
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 0.8960 0.8660 ... ]
치환 벡터를 사용하여 위치를 기준으로 필드 나열하기
구조체를 만듭니다.
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 2.0309 2.0944 ... ]
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 0.8960 0.8660 ... ]
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 2.0309 2.0944 ... ]
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 0.8960 0.8660 ... ]
다른 구조체의 치환 벡터를 사용하여 다시 정렬하기
구조체를 만듭니다.
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 2.0309 2.0944 ... ]
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 0.8960 0.8660 ... ]
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 2.0309 2.0944 ... ]
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 -0.3863 -0.4441 ... ]
입력 인수
S1
— 입력 구조체
구조체형 배열
입력 구조체로, 구조체형 배열로 지정됩니다.
S2
— 구조체를 기준으로 하는 필드 순서
구조체형 배열
구조체를 기준으로 하는 필드 순서로, 구조체형 배열로 지정됩니다. S2
는 S1
과 동일한 필드를 갖지만 필드를 다른 순서로 지정합니다.
C
— 이름을 기준으로 하는 필드 순서
문자형 벡터로 구성된 셀형 배열 | string형 배열
이름을 기준으로 하는 필드 순서로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. C
의 이름은 S1
의 필드 이름과 일치해야 합니다.
P
— 번호를 기준으로 하는 필드 순서
숫자형 벡터
번호를 기준으로 하는 필드 순서로, 숫자형 벡터로 지정됩니다. 번호는 1
부터 n
까지의 정수여야 합니다. 여기서 n
은 S1
의 필드 개수입니다.
출력 인수
S
— 다시 정렬된 구조체
구조체형 배열
다시 정렬된 구조체로, 구조체형 배열로 반환됩니다. S
는 S1
과 동일한 필드를 갖지만 순서는 다를 수 있습니다.
Pout
— 출력 필드 순서
숫자형 벡터
출력 필드 순서로, 숫자형 벡터로 반환됩니다. Pout
의 요소는 1
부터 n
까지의 정수입니다. 여기서 n
은 S1
의 필드 개수입니다. 정수로 구성된 순열은 필드 순서의 변경을 나타냅니다.
팁
orderfields
는 최상위 수준 필드만 정렬합니다. 이것은 재귀적이지 않습니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
참고 항목
struct
| isfield
| fieldnames
| setfield
| getfield
| rmfield
| struct2cell
| cell2struct
도움말 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)