본문 바로가기
Matlab

[Matlab] 잡다한 함수 정리 : hypot(a,b), size(a,b), issorted(A), find(), strfind(), rand(n), randi(), randperm() deal(), isvector(A)

by Mene 2023. 4. 30.
반응형

hypot(a,b)는 빗변의 길이, 즉 \(\sqrt{a^2+b^2}\)를 구하는 함수이다.

이 함수는 데이터의 오버플로우나 언더플로우를 막기 위해 만들어진 함수이다.

 

hypot(3,4)

 

 

size(a,b)는 행렬 a의 크기를 [행, 열] 형태의 벡터로 반환한다. 이 때 행만을 취하고 싶으면 a=1, 열을 취하고 싶으면 a=2를 대입하면 된다.

 

A=[1 2 3 ; 4 5 6];
R1=size(A)
R2=size(A,1)
R3=size(A,2)

 

 

 

issorted(A)는 행렬의 오름차순, 내림차순으로 정렬되어 있는지 확인하는 함수로, 기본값은 오름차순이다.

내림차순으로 정렬되어있는지 확인하고 싶다면 issorted(A,'descend')를 사용하면 된다.

2차원 행렬의 경우 연산할 수 있는 순서가 행방향(2), 열방향(1)로 지정되어 있으며 issorred(A,1) 형태로 사용할 수 있다.

 

A=[2 8 5 0 7 5 3 2 9];
B=[1 2 3 4 5];
C=[5 4 3 2 1];

R1=issorted(A)
R2=issorted(B)
R3=issorted(C,'descend')

 

 

find(A) : 배열 a에 대해 0이 아닌 값에 대해 인덱스를 반환하는 인덱스 벡터를 생성한다.

 

find(A==1) : 배열 a에 대해 조건(A==1)을 만족하는 값에 대해 인덱스를 반환하는 벡터를 생성한다.

 

A=[1 0 0 1 1 0 0 0];
find(A==1)

 

 

strfind(a,'str') : 문자열 a에 대해 'str'이 들어있는 인덱스를 반환하는 벡터를 생성한다. 

 

a="Hello World";
strfind(a,'lo')

 

 

rand(n) : 0과 1사이의 난수를 n*n 행렬로 생성한다.

 

randi(n) : 범위 n에 대해 정수로만 이루어진 난수를 생성한다. 이때 n은 [min max] 행렬 형태로 작성해야 한다. 스칼라 값이면 1부터 n까지를 의미한다.

 

R1=randi([1 6])
R2=randi([1 6],2)

randperm(n) : 정수로 구성된 난수 순열 생성, 한번 나온건 또 나오지 않음

 

R1=randperm(4)
R2=randperm(6)

 

 

deal() : matlab에서는 변수를 한번에 여러번 할당하는 것이 불가능하다. 즉 [x1 x2]=[1 2]가 불가능하다. 따라서 이를 해결하기 위해 따로 대입하거나 dea() 함수를 사용하는데 [x1 x2]=deat(1,5)를 수행하면 x1=1, x2=5가 할당된다. 

 

isvector(A) : A가 벡터인지 확인하는 함수, 맞으면 1(true), 틀리면 0(false)를 반환한다.

 

 

반응형

댓글