ones
고정소수점 속성을 갖는 모두 1로 구성된 배열 생성
설명
예제
지정된 numerictype 및 fimath 속성을 갖는 1로 구성된 2×3 배열을 만듭니다.
워드 길이가 24이고 소수부 길이가 12인 부호 있는 fi 객체를 만듭니다.
p = fi([],1,24,12);
p와 동일한 numerictype 속성을 갖는 1로 구성된 2×3 배열을 만듭니다.
X = ones(2,3,'like',p)X =
1 1 1
1 1 1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 24
FractionLength: 12
3×2 배열 A를 정의합니다.
A = [1 4 ; 2 5 ; 3 6]; sz = size(A)
sz = 1×2
3 2
워드 길이가 24이고 소수부 길이가 12인 부호 있는 fi 객체를 만듭니다.
p = fi([],1,24,12);
A와 크기가 동일하고 p와 동일한 numerictype 속성을 갖는 1로 구성된 배열을 만듭니다.
X = ones(sz,'like',p)X =
1 1
1 1
1 1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 24
FractionLength: 12
지정된 numerictype 및 fimath 속성을 갖는 1로 구성된 4×4 배열을 만듭니다.
워드 길이가 24이고 소수부 길이가 12인 부호 있는 fi 객체를 만듭니다.
p = fi([],1,24,12);
p와 동일한 numerictype 속성을 갖는 1로 구성된 4×4 배열을 만듭니다.
X = ones(4, 'like', p)X =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 24
FractionLength: 12
워드 길이가 16이고 소수부 길이가 15이며 OverflowAction이 Wrap으로 설정된 부호 있는 fi 객체를 만듭니다.
format long p = fi([],1,16,15,'OverflowAction','Wrap');
p와 같은 numerictype 속성을 갖는 1로 구성된 2×2 배열을 만듭니다.
X = ones(2,'like',p)X =
0.999969482421875 0.999969482421875
0.999969482421875 0.999969482421875
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
1은 p의 데이터형으로 표현할 수 없으므로 값이 포화됩니다. 출력 fi 객체 X는 p와 동일한 numerictype 속성 및 fimath 속성을 가집니다.
실수 값이 아니며, 대신 기존 배열과 같은 복소수 스칼라 고정소수점 1을 만듭니다.
복소수 fi 객체를 정의합니다.
p = fi( [1+2i 3i],1,24,12);
p와 같은 복소수인 스칼라 1을 만듭니다.
X = ones('like',p)X =
1.0000 + 0.0000i
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 24
FractionLength: 12
알고리즘 자체를 변경하지 않고도 여러 다른 데이터형으로 실행할 수 있는 MATLAB® 알고리즘을 작성합니다. 알고리즘을 재사용하려면 알고리즘에서 데이터형 정의를 분리하십시오.
이 방법을 사용하면 부동소수점 데이터형으로 알고리즘을 실행하여 기준을 정의할 수 있습니다. 그런 다음 원래 MATLAB 코드를 수정하지 않고도 여러 다른 고정소수점 데이터형으로 알고리즘을 테스트하고 고정소수점 동작을 기준과 비교할 수 있습니다.
계수, 입력 데이터, 출력 데이터의 데이터형이 정의된 구조체 T를 입력 파라미터로 받는 MATLAB 함수 my_filter를 작성합니다.
function [y,z] = my_filter(b,a,x,z,T) % Cast the coefficients to the coefficient type b = cast(b,'like',T.coeffs); a = cast(a,'like',T.coeffs); % Create the output using zeros with the data type y = zeros(size(x),'like',T.data); for i = 1:length(x) y(i) = b(1)*x(i) + z(1); z(1) = b(2)*x(i) + z(2) - a(2) * y(i); z(2) = b(3)*x(i) - a(3) * y(i); end end
my_filter를 부동소수점 계단 입력을 사용해서 호출하고 고정소수점 계단 입력을 사용해서 호출하는 MATLAB 함수 zeros_ones_cast_example을 작성해서 결과를 비교합니다.
function zeros_ones_cast_example % Define coefficients for a filter with specification % [b,a] = butter(2,0.25) b = [0.097631072937818 0.195262145875635 0.097631072937818]; a = [1.000000000000000 -0.942809041582063 0.333333333333333]; % Define floating-point types T_float.coeffs = double([]); T_float.data = double([]); % Create a step input using ones with the % floating-point data type t = 0:20; x_float = ones(size(t),'like',T_float.data); % Initialize the states using zeros with the % floating-point data type z_float = zeros(1,2,'like',T_float.data); % Run the floating-point algorithm y_float = my_filter(b,a,x_float,z_float,T_float); % Define fixed-point types T_fixed.coeffs = fi([],true,8,6); T_fixed.data = fi([],true,8,6); % Create a step input using ones with the % fixed-point data type x_fixed = ones(size(t),'like',T_fixed.data); % Initialize the states using zeros with the % fixed-point data type z_fixed = zeros(1,2,'like',T_fixed.data); % Run the fixed-point algorithm y_fixed = my_filter(b,a,x_fixed,z_fixed,T_fixed); % Compare the results coder.extrinsic('clf','subplot','plot','legend') clf subplot(211) plot(t,y_float,'co-',t,y_fixed,'kx-') legend('Floating-point output','Fixed-point output') title('Step response') subplot(212) plot(t,y_float - double(y_fixed),'rs-') legend('Error') figure(gcf) end
입력 인수
정사각 행렬의 크기로, 정수 값으로 지정되며, 출력값을 1로 구성된 정사각 n×n 행렬로 정의합니다.
n이 0이면X는 빈 행렬이 됩니다.n이 음수이면 0으로 처리됩니다.
데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
각 차원의 크기로, 2개 이상의 정수 값으로 지정되며, X를 sz1×...×szN 배열로 정의합니다.
크기가 0인 차원이 있을 경우
X는 빈 배열이 됩니다.크기가 음수인 차원이 있을 경우 0으로 처리됩니다.
2보다 큰 후행 차원의 크기가 1일 경우 출력값
X에 해당 차원이 포함되지 않습니다.
데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
출력 크기로, 정수 값으로 구성된 행 벡터로 지정됩니다. 이 벡터의 요소는 각각 대응하는 차원의 크기를 나타냅니다.
크기가 0인 차원이 있을 경우
X는 빈 배열이 됩니다.크기가 음수인 차원이 있을 경우 0으로 처리됩니다.
2보다 큰 후행 차원의 크기가 1일 경우 출력값
X에 해당 차원이 포함되지 않습니다.
예: sz = [2,3,4]는 X를 2×3×4 배열로 정의합니다.
데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
프로토타입으로, fi 객체 또는 숫자형 변수로 지정됩니다. 복소수 객체를 지정할 때 프로토타입을 사용하려면 프로토타입 값을 지정해야 합니다. 그 외의 경우에는 값을 지정하지 않아도 됩니다.
값 1이 p의 숫자형을 오버플로하는 경우 연결된 fimath의 지정된 OverflowAction 속성에 관계없이 출력값이 포화됩니다. 이후에 출력값에 수행되는 모든 연산은 연결된 fimath의 규칙을 따릅니다.
복소수 지원: 예
팁
b = cast(a,'like',p) 구문을 사용하여 데이터형 지정을 알고리즘 코드와 분리하면 다음이 가능합니다.
여러 다른 데이터형에 대해 알고리즘 코드를 재사용할 수 있습니다.
데이터형 사양과 여러 데이터형에 대한 switch 문을 사용하면 알고리즘이 지저분해지지 않게 관리할 수 있습니다.
알고리즘 코드의 가독성을 높일 수 있습니다.
고정소수점 데이터형과 부동소수점 데이터형 간에 전환하여 기준을 비교할 수 있습니다.
알고리즘 코드를 변경하지 않고도 여러 변형의 고정소수점 설정 간에 전환할 수 있습니다.
버전 내역
R2013a에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)