SW 설계 16

Matlab 포맷 변경

MATLAB에서 출력 표시 형식을 변경하려면 format 명령을 사용할 수 있습니다. 몇 가지 예시를 살펴보겠습니다: 1. 긴 고정소수점 형식: To display a value in the long fixed-decimal format (with many decimal places), use: format long pi 이렇게 하면 π (pi) 값은 3.141592653589793으로 표시됩니다. 2. 16진수 형식: 정수와 실수를 16진수 형식으로 표시하려면 다음과 같이 입력하세요: format hex intmax('uint64') realmax 이렇게 하면 정수와 실수의 최댓값이 16진수로 표시됩니다. 3. 짧은 공학 표기법: 짧은 공학 표기법은 소수점 이하 4자릿수로 표시되며 지수는 3의 배수입니..

SW 설계/Matlab 2024.04.17

Matlab: Write a matrix to a file

Matlab에서 행렬을 텍스트 파일로 저장하는 방법은 여러가지가 있다. Matlab 2019 부터는 writematrix라는 함수도 제공하고 있지만, 그 이전 버전에서는 dlmwrite를 사용하는 것이 편리하다. dlmwrite는 ASCII 형식의 구분 기호 분리된 (dilimited) 파일을 저장한다. (2) dlmwrite(’A.txt’,A)는 행렬 A 를 ‘A.txt’ 파일에 저장하고, 이때 matrix elements들을 구분하기 위해 기본 구분 기호 (delimiter) 인 쉽표 (‘,’)를 사용한다. 데이터는 대상 파일인 파일 이름의 첫 번째 행 첫 번째 열에서 시작하여 기록됩니다. (3) dlmwrite('A1.txt',A,'delimiter','\t') 는 ‘delimeter’로 지정한 구..

SW 설계/Matlab 2023.04.08

스칼라: implicit 사용법 응용

지난 블로그에서는implicit의 기본적인 사용 방법을 알아보았습니다. 이번에는 좀더 구체적인 예를 가지고, 활용하는 방법을 알아보도록 하겠습니다. 예 3. 암시형 인자 앞서 보여준 예 2와 비슷하게, 자주 사용되는 hash tag를 문자열 앞에 추가하는 함수를 만들어보겠습니다. scala> class HashTag(val s: String) defined class HashTag scala> def addHashTag(s: String)(implicit p: HashTag) = p.s + s addHashTag: (s: String)(implicit p: HashTag)String scala> addHashTag("scala") :15: error: could not find implicit value..

SW 설계/스칼라 2021.10.27

스칼라: implicit 기본 사용법

implicit는 boilerplate 코드를 줄여서, 코드의 가독성을 높이는데 자주 사용됩니다. Boilerplate 코드란 별 수정 없이 많은 곳에서 반복적으로 사용되는 코드를 의미합니다. Scala에서는 이러한 코드들을 implicit 키워드를 사용하여 생략하고 코드를 줄여줍니다. 사전적 의미로 implicit 는 암시적인이란 뜻이므로, 구체적으로 명시하지 않고 사용한다는 것을 의미합니다. 보통 자동 형 변환이나 늘 사용하는 인자를 전달하는 용도로 사용됩니다. 장점은 함수들에서 자주 사용되는 인자들을 implicit로 선언하면, 생략할 수 있지만, 단점은 문법이 복잡해져, 숙달되지 않은 사람들에게는 어렵게 느끼질 수 도 있습니다. 간단하게는, 인자에 implicit 가 있으면, 늘 사용되므로 미리 ..

SW 설계/스칼라 2021.10.27

makefile 기초: 변수, 패턴 규칙, 자동 변수

앞서 소개한 makefile은 실행 파일 program을 빌드하는데 잘 사용될 수 있다. # Link program: main.o function.o c++ main.o function.o -o program # Compilation main.o: main.c c++ -c main.c -o main.o function.o: function.c c++ -c function.c -o function.o 만약, 컴파일러 옵션을 변경한다거나, 다른 컴파일러를 사용한다고 가정해보자. 또는, 컴파일할 소스 파일을 추가한다고 생각해보자. 컴파일러 옵션을 변경할 경우, (5,9) 의 action들을 모두 수정해야 하고, 이는 소스 파일의 개수만큼 수정해야 한다. 다른 컴파일러를 사용할 경우에도 마찬가지다. 만약 컴파일..

SW 설계/make 2021.10.19

makefile 기초: 소개 및 실행 과정

makefile은 어떤 모듈이 수정되어 다시 컴파일되어야 하는지 자동으로 결정해서, 필요한 파일들만 재 컴파일해서 하나의 프로그램으로 생성하므로 재컴파일에 따른 시간 낭비를 최소화할 수 있다. makefile은 makepp에게 프로그램을 컴파일하는 방법을 알려주는 명령어들의 집합이다. makepp는 표준 유닉스 make를 위해 작성된 makefile들을 읽을 수 있다. 소스 파일들을 사용하여 하나의 실행 프로그램으로 컴파일하는 과정은 복잡하고, 컴파일에 많은 시간이 소요된다. 개발자가 하나의 프로그램을 만들기 위해 각 소스 파일들을 컴파일하는 명령을 직접 입력하기엔 입력할 인자들이 너무 많다. 물론 shell script를 사용하여 프로그램을 컴파일할 수 도 있지만, 사용되는 소스 중 단 하나만 수정되어..

SW 설계/make 2021.10.19

파이썬 기초: 숫자, 문자열 자료형

개요 자료형은 숫자, 문자열 등 프로그램 상에서 자료 형태로 표현하는 모든 것을 뜻한다. C언어 전후로 프로그래밍 언어를 이해하는 전통적인 방법은, 그 언어의 자료형을 이해하는 것이었다. 과거 프로그램들은 연산 위주의 코드들이 많았고, C언어 이전에 연산에 주로 사용되어온 Fortran 으로부터 C언어로 넘어가면서, C언어가 처리할 수 있는 수의 범위가 중요했던 때가 있었다. 90년대부터 C언어가 대중화되면서, 대부분의 C언어 관련 서적들은 C언어에서 사용하는 char, int, float, double 과 같은 자료형들을 먼저 다루었고, 90년대 이후로 8, 16, 32, 64 bits 컴퓨터들이 생겨나면서, 각 컴퓨터들이 기본적으로 몇 bits까지 처리하는지, 처리할 수 있는 숫자의 범위는 얼마나 되..

SW 설계/파이썬 2021.10.17

파이썬 기초: 변수

변수 변수 (Variable) 란 데이터; 혹은 값을 저장하는 공간이다. 즉, 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 곳이고, 이는 컴퓨터 메모리에 저장된다. 컴퓨터에서 실행되는 모든 프로그램들은 실행될때 실행될 코드와 데이터들이, 별도의 코드 실행 영역과 코드 실행에 필요한 데이터 영역에 올라오게 된다 (load). 예를 들어, 아래 그림과 같이 우리 눈 앞에 멋진 자동차가 있어서, 그 상황을 기억해서 친구에게 얘기하게 될 경우를 생각해보자. 우리는 그 자동차를 눈으로 보고, 우리 뇌 속에 자동차 모양, 색깔, 번호판, 메이커 등을 기억하게 된다. 이후 친구를 만나면, 뇌 속에 기억된 내용을 가지고 그 자동차에 대해 친구에게 말할 수 있게 된다. 자동차를 말하기 위해 우리가 뇌의 한 공간에 이..

SW 설계/파이썬 2021.10.17

makefile 사용시 유용한 팁들!

GNU make는 코드를 컴파일하기 위해 만들어진 유틸리티지만, 현재는 많은 파일들과 디렉토리들에서 변경사항을 적용하기 위한 용도로도 많이 사용된다. 따라서, 현재는 개발자 뿐만 아니라, 시스템 관리자에게도 매우 유용한 툴이다. make를 사용하려면 설정 파일이 필요한데, 이 설정 파일이름이 보통 makefile이다. 아무 인자없이 make를 실행하면, GNU make는 현재 작업 디렉토리에서 설정파일 GNUmakefile, Makefile, makefile을 찾는다. 만약 설정 파일에 다른 이름을 사용하고자 한다면 make -f filename을 사용해야 한다. 본 자료는 makefile을 사용할 때 혼동되거나, 자주 사용되는 구문들을 정리해보았다. 오늘 포함할 내용들은 아래와 같다. 변수 선언: =,..

SW 설계/make 2021.10.12

스칼라: Mixins

오늘은 Scala Mixin에 대한 내용을 소개해보려고 합니다. Mixin은 클래스들을 합치는 데 사용되는 trait (속성) 으로서, DRY 한 Scala언어가 되는데 크게 일조하고 있습니다. 소개 가장 쉽게, 혹은 흔하게 사용하는 mixin방법은 4 단계로 진행됩니다. Step 1: 가장 먼저 super class A를 abstract class로 선언합니다. Step 2: 이를 상속한 하위 클래스 B를 일반 클래스로 정의합니다. 이를 위해 부모 클래스인 abstract class에서 선언한 abstract형들을 명시합니다. Step 3: Super class A에 대한 method들을 포함하는 trait C를 정의합니다. Step 4: 최종적으로 사용할 일반 클래스 D는 일반 클래스 B를 상속하고,..

SW 설계/스칼라 2021.10.09