분류 전체보기147 [IDE] 비주얼 스튜디오 디스어셈블리 코드 확인 방법 C, C++ 코드 성능을 확인하거나 동작 방식을 로우 레벨에서 확인해야할 때 어셈블리 코드를 직접 보는 것이 도움된다. Visual Studio 에서는 컴파일된 어셈블리 코드를 확인할 수 있는 창을 제공한다.디스어셈블리 코드 창 사용 설정디스어셈블리코드 창을 사용하기 위해선 먼저 설정이 필요하다. Visual Studio에서 도구 > 옵션 > 디버깅 > 일반 > '주소 수준 디버깅 사용' 을 체크한다. 디스어셈블리 코드 확인 방법작성한 코드에 중단점을 걸고 디버그 모드로 실행한다. 중단점은 F9 키로 설정 가능하며, 디버그 모드는 F5 키를 누르면 된다. 코드가 컴파일 이후 실행되고, 중단점에 제어가 걸려 있을 때 디스어셈블리 창을 실행한다. 디스 어셈블리 창은 디버그 > 창 > 디스어셈블리를 클릭하면 .. 2024. 7. 8. [C++] 타입 추론 auto, for loop auto auto 키워드 auto는 변수의 자료형을 대신에 사용하는 키워드 입니다. 자료형에 auto를 사용하면, 컴파일 시간에 변수의 자료형을 추론합니다.int x = 1; // 변수 x 의 자료형을 int로 선언해야 함auto x = 1; // 변수 x의 자료형을 컴파일 시간에 int로 추론함 auto 키워드의 장점 auto 키워드는 2가지 장점이 있습니다. 첫번째는 긴 변수명을 대체할 수 있다는 점입니다.vector>> str = Print(); // 자료형이 길죠?auto str = Print(); // 컴파일 시간에 Print 함수의 반환 자료형을 추론하므로,// 긴 자료형 작성이 불필요합니다. 두번째 장점은, 코드 수정이 용이합니다. 함수의 출력 자료형이 변경되더라도 함수가 호출된 모든 부분을 찾아 .. 2024. 7. 4. [선형대수] 고윳값 분해 (Eigenvalue Decomposition) 고윳값 분해는 주성분 분석에 사용되는, 데이터 과학에 선형 대수가 큰 공헌을 한 개념이다. 고윳값 분해를 통해 고윳값(Eigen value)과 고유벡터(Eigen vector)를 계산할 수 있다. 고윳값 분해는 기하학, 통계, 제어 등 각 분야에 따라 다양한 해석 관점이 존재한다. 본 글에서는 기하학적 관점에서의 고윳값 분해를 확인한다. 고윳값과 고유벡터 먼저, 행렬과 벡터의 곱을 다음 관점에서 볼 수 있다. 행렬은 벡터의 크기와 방향을 변화시키는 특징을 가지고 있는 것이다. (아래 왼쪽 그림) 그 중에서도 특정 행렬과 벡터는 곱했을 때, 방향은 변하지 않고 크기만 변하는 경우가 있다. 이때 벡터를 행렬의 고유벡터라 하며, 변하는 크기 값을 고윳값이라 한다. (아래 우측의 그래프에서, 행렬 A는 벡터 v.. 2024. 1. 16. [선형대수] 일반선형모델 및 최소제곱법 본 글에서는 일반선형모델, 최소제곱법을 설명한다. 일반선형모델은 독립변수가 스칼라 곱셈과 덧셈으로만 이루어진 모델이다. 최소제곱법은 일반선형모델의 계수 값을 계산하기 위한 방법이다. 그리고 마지막으로 앞서 공부한 QR분해를 사용해 일반선형모델을 푸는 좀 더 수치 안정적인 방법을 소개한다. 일반 선형 모델 (General Linear Model) 일반 선형 모델은 예측변수(독립변수)를 관측값(종속변수)와 스칼라 곱셈 및 덧셈으로만 연관시킨 방정식의 집합이다. 일반 선형모델을 구축하는 과정은 아래와 같다. 독립변수와 종속변수를 연관시킨 방정식을 정의한다. (ex/ 1차 다항식, n차 다항식) 관측된 데이터를 방정식에 대입한다. 관측된 데이터 수만큼의 방정식을 행렬 방정식으로 변환한다. 행렬 방정식을 푼다. .. 2024. 1. 15. [선형대수] 행 축소와 LU 분해 행 축소와 LU분해는 이전 글인 QR분해와 함께 행렬을 두개의 행렬로 분해하는 방법이다. 이들은 선형대수에서 최소제곱모델, 연립방정식, 역행렬 계산 등에서 활용되며 상대적으로 수치 안정적인 방법을 제공한다. QR분해는 다음 글을 참고하자.(https://iridescentboy.tistory.com/163) 본 페이지에서는 LU 분해와 관련 개념인 행 축소를 다룬다. 행 축소를 다루기 위해 먼저, 행렬연립방정식을 보자. 행렬방정식 2개 이상의 방정식은 행렬을 사용해 표현할 수 있다. 예를 들어, 아래 왼쪽의 2개 방정식은 x, y 변수로 구성되어 있다. 이를 행렬 방정식으로 변경하면 오른쪽과 같다. 행렬방정식을 먼저 제시한 이유는, 행 축소와 LU 분해가 행렬 방정식을 수치 안정적으로 푸는데 도움이 되기.. 2024. 1. 15. [선형대수] 직교행렬과 QR분해 선형대수에는 여러가지 분해 종류가 있는데, 대표적으로 직교벡터분해, QR분해, LU분해, 고윳값분해, 특잇값분해가 있다. 분해란 벡터나 행렬 하나를 2개 이상으로 분리하는 것을 말한다. 직교벡터분해의 경우 아래 페이지에 정리하였으니 참고하자. (https://iridescentboy.tistory.com/160) 본 페이지에서는 직교행렬과 QR분해를 다룬다. 중심이 되는 것은 QR분해이고, 이는 역행렬, 최소제곱모델적합, 고윳값 분해등에 사용되는 중요한 개념이다. 직교행렬 (Orthogonal Matrix) 직교행렬은 다음 2가지 특징을 가진 행렬이다. 행렬의 모든 열은 서로 직교한다. = 내적 시 0 이다. 각 열의 Norm은 1이다. 이를 수식으로 표현하면 다음과 같다. 이를 행렬 관점에서 보면, 어.. 2024. 1. 9. 이전 1 2 3 4 5 6 7 ··· 25 다음