GNU 옥타브

GNU Octave
GNU 옥타브
Gnu-octave-logo.svg
GNUOctave430.png
Linux에서 실행되는 GNU 옥타브 4.3.0+
개발자존 W. 이튼과 다른 많은 사람들[1]
초기 릴리즈1993년 1월 4일; 29년 전(1993년 1월 4일) (최초 알파 릴리즈)
1994년 2월 17일, 28년 전(1994년 2월 17일) (버전 1.0)[2]
안정된 릴리스
7[3][4].2.0 / 2022년 7월 28일
저장소
기입처C++(메인), 옥타브 자체(스크립트), C(랩퍼 코드), Fortran(선형 대수 래퍼 코드)[5]
운영 체제Windows, macOS, Linux, BSD
이용가능기간:18개[6] 언어
유형과학 컴퓨팅
면허증.2007: GPL-3.0 이후[a]
1992: GPL-2.0 이후[b]
웹 사이트gnu.org/software/octave/

GNU 옥타브는 주로 과학 컴퓨팅과 수치 계산을 위한 고급 프로그래밍 언어입니다.옥타브는 선형 및 비선형 문제를 수치적으로 해결하고 MATLAB과 대부분 호환되는 언어를 사용하여 다른 수치 실험을 수행하는 데 도움이 됩니다.배치 지향 언어로도 사용할 수 있습니다.GNU 프로젝트의 일부로서 GNU General Public License의 조건에 따른 무료 소프트웨어입니다.

역사

그 프로젝트는 [7]1988년경에 구상되었다.처음에 그것은 화학 원자로 설계 과정의 동반자가 되려고 의도되었다.완전한 개발은 1992년 John W. Eaton에 의해 시작되었습니다.첫 번째 알파 릴리스는 1993년 1월 4일로 거슬러 올라가 1994년 2월 17일에 버전 1.0이 출시되었습니다.버전 7.1.0은 2022년 [8]4월 6일에 출시되었습니다.

이 프로그램의 이름은 주요 저자의 교수였던 옥타브 레벤스피엘의 이름을 따서 지어졌다.Levenspiel은 봉투의 뒷면을 [9]빠르게 계산하는 능력으로 유명했다.

개발 이력

시간을 액션.
1988/1989 첫 번째 토론 (책과 소프트웨어)
1992년 2월 개발 개시
1993년 1월 뉴스 인 웹 (버전 0.60)
1994년 2월 제1회 간행물 (버전 1.0.0~1.[10]1.1)
1996년 12월 Windows 포트(Cygwin)[11]를 사용한 제2판 (버전 2.0.x)
1998년 3월 버전 2.1
2004년 11월 버전 2.9(DEV 버전 3.0)[12]
2007년 12월 버전 3.0 (Milestone)[13]의 발행
2009년 6월 버전 3.2 (Milestone)[14]의 발행
2011년 2월 8일 버전 3.4.0 (마일스톤)[15]
2012년 2월 22일 옥타브 3.6.1 (마일스톤)[16][17] 발행
2013년 12월 31일 옥타브 3.8.0 (실험용 [18][19][20]GUI) 발행
2015년 5월 29일 버전 4.0.0(안정적인 GUI 및 OOP[21][22][23][24]새로운 구문)
2016년 11월 14일 버전 4.2.0(gnuplot 4.4+)[25][26][27][28]
2018년 4월 30일 버전 4.4.0 (GUI QT 툴킷의 새로운 목표, FLTK 툴킷은 폐지되지 않으며 삭제 일정도 없습니다)[29][30][31]
2019년 3월 1일 옥타브 5.1.0(QT5 선호, Qt 4.8 최소), hiDpi[32] 지원 발행
2020년 1월 31일 옥타브 5.2.0 (QT5 선호)[33]발표
2020년 11월 26일 옥타브 6.1.0 발행(QT5 선호, [34]Qt 4.x 7에서 제거 권장 없음)
2021년 2월 20일 옥타브 6.2.0(QT5 선호), 버그픽스, 개선된 매트랩 구문[35] 지원
2022년 4월 6일 옥타브 7.1.0(QT5 선호), 향상된 그래픽 백엔드 및 매트랩 기능 호환성[36]

개발

Octabe는 개인용 과학 컴퓨팅을 위한 데스크톱에서 사용될 뿐만 아니라 학계 및 산업계에서도 사용됩니다.예를 들어, 옥타브는 피츠버그 슈퍼컴퓨팅 센터의 거대한 병렬 컴퓨터에서 사회 보장 번호 [37]추측과 관련된 취약성을 찾기 위해 사용되었습니다.

GPU를 [38]사용하면 OpenCL 또는 CUDA를 통한 고속화가 가능합니다.

기술적 세부사항

  • 옥타브는 C++ 표준 라이브러리를 사용하여 C++로 작성됩니다.
  • 옥타브는 인터프리터를 사용하여 옥타브 스크립트 언어를 실행합니다.
  • 옥타브는 동적으로 로드 가능한 모듈을 사용하여 확장할 수 있습니다.
  • 옥타브 인터프리터는 OpenGL 기반 그래픽 엔진을 사용하여 플롯, 그래프 및 차트를 만들고 저장 또는 인쇄합니다.또는 gnuplot도 같은 목적으로 사용할 수 있습니다.
  • 옥타브에는 기존의 명령줄 인터페이스(CLI) 외에 그래픽 사용자 인터페이스(GUI)가 포함되어 있습니다. 자세한 내용은 #사용자 인터페이스를 참조하십시오.

언어인 옥타브

옥타브 언어는 해석된 프로그래밍 언어입니다.이것은 구조화된 프로그래밍 언어(C와 유사)이며 많은 공통 C 표준 라이브러리 함수 및 특정 UNIX 시스템 호출 및 [39]함수를 지원합니다.단, 불필요한 중복을 피하기 위해 함수 인수는 복사 라이트이지만 참조에 의한[40] 인수 전달은 지원하지 않습니다.

옥타브 프로그램은 함수 호출 목록 또는 스크립트로 구성됩니다.구문은 매트릭스 기반이며 매트릭스 연산을 위한 다양한 기능을 제공합니다.다양한 데이터 구조를 지원하며 객체 지향 [41]프로그래밍이 가능합니다.

이 구문은 MATLAB과 매우 유사하며 스크립트를 신중하게 프로그래밍하면 Octab과 [42]MATLAB 모두에서 실행할 수 있습니다.

옥타브는 GNU General Public License에 따라 제공되므로 자유롭게 변경, 복사 및 사용할 [9]수 있습니다.이 프로그램은 Microsoft Windows 및 Linux, AndroidMacOS[43][44][45]포함대부분의 Unix 및 Unix 유사 운영 체제에서 실행됩니다.

특장점

명령 및 변수 이름 완료

명령줄에 TAB 문자를 입력하면 Octab은 변수, 함수 및 파일 이름을 완료하려고 합니다(Bash의 탭 완료와 유사).옥타브에서는 [46]커서 앞의 텍스트를 이름의 첫 번째 부분으로 사용하여 완료합니다.

명령어 이력

대화식으로 실행할 때 옥타브는 내부 버퍼에 입력된 명령을 저장하여 호출 및 편집할 수 있도록 합니다.

데이터 구조

옥타브는 구조에서 데이터를 구성하는 데 제한된 양의 지원을 포함합니다.이 예에서는 다음과 같은 구조를 볼 수 있습니다.요소 a, bc(각각 정수, 배열 및 문자열):

옥타브:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "문자열'; 옥타브:2> x.a 응답하다 =  1 옥타브:3> x.b 응답하다 =     1   2    3   4  옥타브:4> x.c 응답하다 = 스트링 옥타브:5> x x = {   a =  1   b =       1   2      3   4    c = 스트링 } 

단락 부울 연산자

옥타브음&&그리고. 논리 연산자는 요소별 연산자와 대조적으로 단락 방식으로 평가된다(C 언어의 해당 연산자와 동일).&그리고. .

증감 연산자

옥타브에는 C-like 증가감소 연산자가 포함된다. ++그리고.--prefix와 postfix의 양쪽 형식으로 표시됩니다.옥타브는 또한 증강 과제를 수행합니다.x += 5.

언인드 프로텍트

옥타브는 Lisp를 본떠 모델링된 제한된 형태의 예외 처리를 지원합니다.unwind_protect 블록의 일반적인 형식은 다음과 같습니다.

풀리다     언와인드_protect_displays    정리하다 end_paramind_protect 

일반적으로, GNU 옥타브는 특정의 종료로서 인식한다.block키워드 중 하나end(MATLAB 언어와 호환됨) 또는 보다 구체적인 키워드end_block그 결과,unwind_protectblock은 키워드 중 하나로 종료할 수 있습니다.end_unwind_protect예시와 같이 또는 보다 portable 키워드를 사용하여end.

블록의 정리 부분은 항상 실행됩니다.신체 부위에서 예외가 발생한 경우 예외를 블록 외부로 전파하기 직전에 청소가 실행된다.unwind_protect.

GNU 옥타브는 또한 다른 형태의 예외 처리(MATLAB 언어와 호환됨)를 지원합니다.

해라     또 만나    예외 처리 끝. 

이 후자의 형식은,unwind_protect두 가지 방법으로 차단합니다.첫째, exception_handling은 본문에 의해 예외가 발생한 경우에만 실행됩니다.둘째, exception_handling 실행 후 예외는 블록 외부로 전파되지 않습니다(단,rethrow( lasterror )exception_handling 코드 내에 문이 명시적으로 삽입됩니다).

Variable-length 인수 리스트

옥타브에는 명시적 상한 없이 불특정 다수의 인수를 취하는 함수를 처리하는 메커니즘이 있다.0개 이상의 인수 목록을 지정하려면 특수 인수를 사용합니다.varargin목록의 마지막(또는 유일한) 인수로 지정합니다.

함수 s = + (varargin==0) s = 0이면 (varargin), 그렇지 않으면 s = vararargin{1} + plus (vararargin{2:nargin}), end

가변 길이 리턴 리스트

특수 반환 값을 사용하여 임의의 수의 값을 반환하도록 함수를 설정할 수 있습니다.varargout. 예:

k=1에 대한 함수 varargout = 다중 할당(데이터):nargout varargout{k} = 데이터(:,k); 

C++ 통합

C++ 프로그램에서 옥타브 코드를 직접 실행할 수도 있습니다.예를 들어, 콜을 위한 코드 스니펫을 다음에 나타냅니다.rand([10,1]):

#실패하다 <10/10>.h> ... ColumnVector NumRands(2); NumRands(0) = 10; NumRands(1) = 1; 옥타브_값_리스트 f_filename(f_filename(f_module), f_ret; f_filename(f_filename(f_module)(0) = 옥타브 값(NumRands); f_ret = 분열('랜덤", f_filename(f_filename(f_module), 1); 매트릭스 하지 않다(f_ret(0).매트릭스_값()); 

C 및 C++ 코드는 oct 파일을 만들거나 MATLAB 호환 MEX 파일을 사용하여 GNU Octab에 통합할 수 있습니다.

MATLAB 호환성

옥타브는 MATLAB 호환성을 염두에 두고 제작되었으며 MATLAB와 많은 기능을 공유합니다.

  1. 행렬을 기본 데이터 유형으로 지정합니다.
  2. 복잡한 번호에 대한 빌트인 지원.
  3. 강력한 내장 함수 및 광범위한 함수 라이브러리.
  4. 사용자 정의 함수 형식의 확장성.

옥타브는 MATLAB와의 비호환성을 버그로 취급하므로 Lotus v. Borland 법원 소송에 따라 소프트웨어 저작권을 침해하지 않는 소프트웨어 복제품으로 간주할 수 있습니다.

MathWorks의 FileExchange 저장소의 MATLAB 스크립트는 원칙적으로 Octab과 호환됩니다.그러나 옥타브 호환성이 있고 적절한 오픈 소스 BSD 라이센스로 사용자가 제공하고 업로드하는 경우가 많지만, 파일 교환 사용 약관은 MathWorks의 독점 MATLAB [47][48][49]이외의 사용을 금지하고 있습니다.

구문 호환성

다음과 같은 목적의 구문 추가가 있습니다.단, 경미하지만, 다음과 같은 구문이 있습니다.

  1. 주석 행에는 # 문자 및 % 문자를 접두사로 사용할 수 있습니다.
  2. 다양한 C 기반 연산자 ++, --, +=, *=, /=가 지원됩니다.
  3. 요소는 계단식 인덱싱을 통해 새 변수를 생성하지 않고도 참조할 수 있습니다(예: [1:10](3)).
  4. 문자열은 이중 따옴표 " 문자 및 단일 따옴표로 정의할 수 있습니다.
  5. 변수 유형이 단일(단정밀 부동 소수점 수)인 경우, 옥타브는 단일 도메인(이중 도메인의 MATLAB)의 "평균"을 계산하는데, 이는 빠르지만 정확한 결과를 제공하지 않습니다.
  6. 블록은 endif, endfor, endwhile 등 보다 구체적인 제어구조 키워드로 종단할 수도 있습니다.
  7. 함수는 스크립트 내 및 옥타브 프롬프트에서 정의할 수 있다.
  8. do-until 루프의 존재(C의 do-while과 유사).

기능 호환성

많은 MATLAB 함수는 GNU 옥타브에서 사용할 수 있으며, 그 중 일부는 옥타브 포지의 패키지를 통해 액세스할 수 있다.핵심 옥타브 또는 Forge 패키지의 일부로 사용할 수 있는 기능이 온라인으로 나열됩니다.

사용할 수 없는 기능의 목록은 옥타브 __unimplemented.m__함수에 포함되어 있습니다.구현되지 않은 기능은 또한 옥타브 위키의 많은 옥타브 포즈 패키지에 나열됩니다.

구현되지 않은 함수가 호출되면 다음 오류 메시지가 표시됩니다.

  옥타브:1> 안내   경고:  '가이드 기능.  것은 아니다. 아직 실장했다  옥타브    부탁합니다. 읽어주세요 < >http://월드와이드웹.옥타브.조직/실종된.html> 로. 배우다. 어떻게.  할 수 있다 기부하다 실종된 기능성.   에러: '가이드 정의되어 있지 않다 근처에  1 기둥. 1 

사용자 인터페이스

옥타브는 공식 그래픽 사용자 인터페이스(GUI)와 Qt 기반 통합 개발 환경(IDE)을 제공합니다.이것은 옥타브 3.[18]8부터 사용 가능하며 옥타브 4.0 [21]출시와 함께 (명령줄 인터페이스를 통해) 기본 인터페이스가 되었습니다.EDN의 기고가로부터 호평을 받아, 「Octave는 매우 [50]기능적인 GUI를 갖게 되었습니다」라고 말하고 있습니다.

코딩 교육용 ToolboX와 같은 여러 서드파티 그래픽 프론트엔드도 개발되었습니다.

GUI 응용 프로그램

옥타브 코드를 사용하여 사용자는 GUI 애플리케이션을 만들 수 있습니다.GUI 개발(GNU 옥타브(버전 7.1.0))을 참조하십시오.다음은 몇 가지 예입니다.

버튼, 편집 컨트롤, 확인란

# 그림 및 패널 작성 f = 수치; # 버튼 만들기(기본 스타일) b1 = uicontrol (f, "문자열', "단추", '위치',[10 10 150 40]); # 편집 컨트롤을 만듭니다. e1 = uicontrol (f, "스타일", "편집", "문자열', "텍스트 표시", '위치',[10 60 300 40]); # 체크박스를 만듭니다. c1 = uicontrol (f, "스타일", "실패", "문자열', "체크박스", '위치',[10 120 150 40]); 

텍스트 상자

신속한 = {"폭", "높이", "깊이"}; 기본 값 = {"1.10", "2.20", "3.30"}; rowscols = [1,10; 2,20; 3,30]; dims = inputdlg (신속한, "박스 치수를 입력하세요", rowscols, 기본 값); 

Listbox 메시지 상자.

my_options = {"품목", " 다른", "또 다른"}; [sel, 네 알겠습니다] = listdlg ("목록 문자열", my_my_my_my_my_my_my, "선택 모드", "복수"); 한다면 (네 알겠습니다 == 1)   메시지 박스 ("선택하신 항목:");   위해서 i = 1:숫자 ()     메시지 박스 (스프린트 ("\t%s", my_my_my_my_my_my_my{(i)}));   끝장 또 다른   메시지 박스 ("취소하셨습니다."); 엔디프 

라디오 버튼

# 그림 및 패널 작성 f = 수치; # 버튼 그룹 생성 gp = 의부통군 (f, "위치", [ 0 0.5 1 1]) # 그룹에 버튼을 만듭니다. b1 = uicontrol (gp, "스타일", "라디오 버튼", "문자열', '초이스 1', "위치", [ 10 150 100 50 ]); b2 = uicontrol (gp, "스타일", "라디오 버튼", "문자열', '초이스2', "위치", [ 10 50 100 30 ]); # 그룹에 없는 버튼을 만듭니다. b3 = uicontrol (f, "스타일", "라디오 버튼","문자열', "그룹에 없습니다","위치", [ 10 50 100 50 ]); 

패키지

옥타브는 또한 많은 패키지를 이용할 수 있다.이러한 패키지는 Octabe-Forge Octabe Forge - Packages 또는 Github Octabe Package에 있습니다.또한 누구나 패키지를 만들고 유지할 수 있습니다.

다른 유사한 소프트웨어와의 비교

MATLAB의 다른 무료 대안으로는 ScilabFreeMat[51][52][53][54]있습니다.옥타브는 Scilab보다 [51][55][56]MATLAB과 더 잘 호환되며 FreeMat은 2013년 [57]6월 이후 업데이트되지 않았다.

「 」를 참조해 주세요.

메모들

  1. ^ 2007-10-12 이후 GPL-3.0 이후
  2. ^ 1992-02-19부터2007-10-11까지의 GPL-2.0 이후

레퍼런스

  1. ^ Rik (10 June 2015). "contributors.in". Retrieved 14 June 2015.
  2. ^ ""Full-time development began in the Spring of 1992. The first alpha release was January 4, 1993, and version 1.0 was released February 17, 1994."".
  3. ^ "GNU Octave 7.2.0 Released". 28 July 2022. Retrieved 3 August 2022.
  4. ^ John W. Eaton (28 July 2022). "Version 7.2.0 released". Retrieved 3 August 2022.
  5. ^ "Building - Octave". wiki.octave.org. GNU. Retrieved 1 May 2018.
  6. ^ "Basque, Belarussian, Catalan, Chinese, Dutch, English, French, German, Hungarian, Italian, Japanese, Latvian, Portuguese (Brazil), Portuguese (Portugal), Russian, Spanish, Turkish, Ukrainian". hg.savannah.gnu.org.
  7. ^ "About GNU Octave". www.gnu.org. GNU. Retrieved 1 May 2018.
  8. ^ ""Version 7.1.0 released. Date: Wed, 06 Apr 2022 10:05:12 -0400"".
  9. ^ a b Eaton, John W. "About Octave". Retrieved 2009-06-28.
  10. ^ "GNU Octave Version 1". www.gnu.org.
  11. ^ "GNU Octave Version 2". www.gnu.org.
  12. ^ "News Archive". www.gnu.org.
  13. ^ "GNU Octave Version 3". www.gnu.org.
  14. ^ "GNU Octave Version 3.2". www.gnu.org.
  15. ^ "GNU Octave Version 3.4". www.gnu.org.
  16. ^ "GNU Octave Version 3.6". www.gnu.org.
  17. ^ "GNU Octave 3.6.4 Released". www.gnu.org.
  18. ^ a b "GNU Octave Version 3.8". www.gnu.org.
  19. ^ "GNU Octave 3.8.0 Released". www.gnu.org.
  20. ^ "GNU Octave 3.8.1 Released". www.gnu.org.
  21. ^ a b "GNU Octave Version 4.0". www.gnu.org.
  22. ^ "GNU Octave 4.0.0 Released". www.gnu.org.
  23. ^ "GNU Octave 4.0.1 Released". www.gnu.org.
  24. ^ "GNU Octave 4.0.3 Released". www.gnu.org.
  25. ^ "GNU Octave 4.2.0 Released". Nov 14, 2016.{{cite web}}: CS1 maint :url-status (링크)
  26. ^ "GNU Octave Version 4.2". www.gnu.org.
  27. ^ "GNU Octave 4.2.1 Released". www.gnu.org.
  28. ^ "GNU Octave 4.2.2 Released". www.gnu.org.
  29. ^ "GNU Octave Version 4.4". www.gnu.org.
  30. ^ "GNU Octave 4.4.0 Released". www.gnu.org.
  31. ^ "GNU Octave 4.4.1 Released". www.gnu.org.
  32. ^ "GNU Octave Version 5". www.gnu.org.
  33. ^ "GNU Octave 5.2.0 Released". www.gnu.org.
  34. ^ "GNU Octave 6.1.0 Released". www.gnu.org.
  35. ^ "GNU Octave 6.2.0 Released". www.gnu.org.
  36. ^ "GNU Octave 7.1.0 Released". www.gnu.org.
  37. ^ "Social Security Number Vulnerability Findings Relied on Supercomputing". 8 July 2009. Archived from the original on 29 February 2012.
  38. ^ "Drop-in Acceleration of GNU Octave". NVIDIA Developer Blog. June 5, 2014.
  39. ^ "GNU Octave - Controlling subprocesses". 14 November 2008. Archived from the original on 7 January 2009. Retrieved 2009-01-28.
  40. ^ "GNU Octave". Retrieved 2009-01-28.
  41. ^ "Summary of important user-visible changes for version 3.2". Retrieved 2012-01-05.
  42. ^ "FAQ: MATLAB compatibility". Retrieved 2009-04-04.
  43. ^ "FAQ: Getting Octave". Retrieved 2009-04-04.
  44. ^ "Top (GNU Octave (version 6.3.0))". octave.org.
  45. ^ "Octave for Android - Octave". wiki.octave.org. Retrieved 2021-08-23.
  46. ^ Eaton, John W. "Letting Readline Type For You". GNU Octave Reference Manual.
  47. ^ 파일 교환 코드를 옥타브에서 사용할 수 없는 이유는 무엇입니까? BSD 라이선스로 출시되었습니다!octave.org 에서
  48. ^ mathworks.com의 이용약관제출하는 컨텐츠는, MathWorks 제공하는 제품과 직접 경쟁할 수 없습니다. 파일 교환에 제출된 콘텐츠는 MathWorks 제품에서만 사용할 수 있습니다."
  49. ^ 파일 교환 라이선스 이행 FAQ ( mathworks.com )
  50. ^ "GNU Octave hits a high note – Steve Hageman, 7 February 2014".
  51. ^ a b Trappenberg, Thomas (2010). Fundamentals of Computational Neuroscience. Oxford University Press. p. 361. ISBN 978-0-19-956841-3.
  52. ^ Muhammad, A; Zalizniak, V (2011). Practical Scientific Computing. Woodhead Publishing. p. 3. ISBN 978-0-85709-226-7.
  53. ^ Megrey, Bernard A.; Moksness, Erlend (2008). Computers in Fisheries Research. Springer Science & Business Media. p. 345. ISBN 978-1-4020-8636-6.
  54. ^ Kapuno, Raul Raymond (2008). Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. p. 365. ISBN 978-1-934015-09-4.
  55. ^ Herman, Russell L. (2013). A Course in Mathematical Methods for Physicists. CRC Press. p. 42. ISBN 978-1-4665-8467-9.
  56. ^ Wouwer, Alain Vande; Saucez, Philippe; Vilas, Carlos (2014). Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications. Springer. pp. 114–115. ISBN 978-3-319-06790-2.
  57. ^ "FreeMat". freemat.sourceforge.net. Retrieved 22 February 2020.

추가 정보

외부 링크