1 부

1 부

두 가지 질문(및 답변)이 있습니다. 두 가지 별도의 질문과 답변을 만들 수 있지만 그렇게 하지 않겠습니다. 왜냐하면 두 번째 질문은 첫 번째 질문과 동일하지만 반전이 있기 때문입니다. 아래에 게시한 답변의 두 부분은 질문의 두 부분을 모두 해결합니다. 그래서 저는 이것을 단일 Q&A로 유지하기로 결정했습니다.

1 부

기본 MATLAB 레이아웃 변경

기본 MATLAB 레이아웃(처음 시작 시)은 다음과 같습니다.IMHO꽤 사용자 친화적이지 않습니다. 초보자에게는 괜찮을 수 있지만 슈퍼유저(당신과 나 같은)는 MATLAB 창(데스크톱이라고 함)의 일부 요소를 영구적으로 보고 싶어하지 않습니다. 기본적으로 MATLAB R2014a(및 대부분의 최신 버전)는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

뭐가 문제인지 보자, IMHO:

  1. 창의 위치가 좋지 않습니다. 전체 화면을 사용하지 않으며 화면의 실제 부분(예: 왼쪽, 위쪽, 아래쪽 또는 오른쪽 절반)도 사용하지 않습니다. 문제를 해결해 보겠습니다.
  2. 리본(홈, 플롯 및 앱 탭이 포함된 MATLAB 창의 위쪽 부분)이 확장되어 대부분의 경우 필요하지 않습니다. 그래서 일부를 저장하기 위해 축소하고 싶습니다.스크린 자산.
  3. 왼쪽의 현재 폴더 창은 확장되어 있어 대부분의 경우에는 필요하지 않지만 확장하면 대부분의 경우 거기에 있습니다. 따라서 대부분의 경우 리본과 같은 귀중한 화면 공간을 사용합니다.
  4. 오른쪽 창인 작업 공간은 명령 창(가운데 창)에서 직접 계산을 수행하고 변수 등을 추적해야 하는 경우 매우 유용합니다. 그러나 편집기를 사용하여 스크립트를 작성하거나 함수를 작성하는 동안(표시되지 않음) 기본 창에서). 변수가 상당히 추상적일 수 있으므로 작업공간이 그다지 필요하지 않습니다. 작업공간을 디버깅하는 것이 편리할 수도 있지만 일반적으로 더 많은 화면 공간을 절약하기 위해 작업공간을 축소합니다. 작업 공간 대신 whos​​명령 창의 명령을 사용하여 모든 변수를 나열합니다. 전문가 팁: 예를 들어 'x'로 시작하는 모든 변수를 나열하려면 whos x*.
  5. 'MATLAB을 처음 사용하시나요? ...' 팁이 명령 창 상단에 표시되는 것은 나를 짜증나게 합니다. 왜냐하면 저는 MATLAB을 처음 접하는 사람이 아니기 때문입니다. 다른 창이나 창을 열면 이와 같은 노란색 팁이 더 많이 나타납니다.
  6. 현재 폴더(모든 사람의 기본 MATLAB마다 다름)는 실용적인 폴더가 아닙니다. 실제로 작업을 저장하는 폴더를 기본값으로 설정하고 싶습니다.

당신이나 내가 좋아하지 않거나 변경하고 싶은 것이 더 있을 수 있지만 이 6가지 문제를 해결해 보겠습니다. 내 솔루션은 아래 답변의 파트 1을 참조하세요.


2 부

사용자 정의 설정을 재설정한 컴퓨터에서 유지하기

위의 문제에서 발생한 추가 문제는 내 답변의 1부에서 해결되지 않았습니다. 내 생각에 문제는 관리자가 아닌 컴퓨터, 즉 높은 권한이 없는 컴퓨터에서 MATLAB을 사용하는 더 많은 사람들에게 발생합니다. 이는 내 경우처럼 시스템 설정을 편집할 수 없으며 MATLAB 설정도 편집할 수 없음을 의미합니다. 저는 대규모 직장의 업무용 컴퓨터에서 MATLAB을 사용하고 있습니다. 모든 컴퓨터에는 사용자가 로그인하는 가상 작업 공간이 있습니다. 대부분의 드라이브는 가상입니다. MATLAB의 설치 디렉터리는 해당 드라이브 중 하나에 있습니다. Windows 탐색기를 통해서는 드라이브도 볼 수 없습니다! 또한 MATLAB 바로 가기는 MATLAB 설치 폴더의 MATLAB.exe를 직접 가리키는 것이 아니라 사용자가 사용하도록 허가된 소프트웨어를 호출하기 위해 직장에서 사용하는 다른 프로그램을 가리킵니다. 그러나 MATLAB의 루트 폴더인 matlabroot.

MATLAB 데스크탑을 원하는 방식으로 설정한 후 발생한 문제(아래 답변의 스크린샷 참조)는 재부팅할 때마다 레이아웃이 친숙하지 않은 기본 레이아웃으로 되돌아갔다는 것입니다. 하루에 한 번 이상 재부팅하므로 매번 MATLAB 설정과 레이아웃이 재설정됩니다. 이는 귀하에게는 문제가 되지 않을 수 있지만 일부 사용자 정의 설정, 레이아웃 등을 사용하는 수퍼유저에게는 문제가 됩니다. 내 답변의 2부에서 문제를 해결했습니다. 아래를 참조하세요.

답변1

1 부

기본 MATLAB 레이아웃 변경

우리는 데스크톱 레이아웃을 원하는 대로 변경하여 나열된 6가지 문제를 해결합니다. 기본적으로 다음과 같은 레이아웃을 사용합니다.

처음 시작 시 기본 MATLAB 창

그것을 재현해 봅시다.

  1. 기본 MATLAB 창을 원하는 위치로 드래그하기만 하면 됩니다. 예를 들어 최대화하면 됩니다. 해결되었습니다!
  2. ×MATLAB 창의 오른쪽 상단 모서리에 있는 빨간색 종료 바로 아래에 있는 화살표 아이콘을 클릭하여 리본을 축소합니다. 해결되었습니다!
  3. 현재 폴더 창의 제목(현재 폴더라고 표시된 부분)을 원하는 위치로 드래그합니다. 거의 모든 곳에 놓을 수 있습니다. 드래그하는 동안 마우스 버튼을 놓았을 때 위치가 지정되는 창의 그림자를 볼 수 있습니다. 창을 다른 곳에 배치하거나 왼쪽 상단, 왼쪽 상단, 오른쪽 상단, 상단, 하단 또는 다른 창의 제목으로 끌어서 기본적으로 닫혀 있는 탭 형식의 현재 폴더 창을 만들 수 있습니다. MATLAB은 이를 최소화라고 부릅니다. 창이 최소화되면 훨씬 적은 공간을 차지하며 탭을 클릭하거나 탭 위에 마우스를 올려 열 수 있습니다. 또 다른 해결 방법은 창을 완전히 닫아 MATLAB 데스크탑에서 제거하는 것입니다. 먼저 제목을 마우스 오른쪽 버튼으로 클릭하고 → 도킹 해제를 클릭(또는 Ctrl+ Shift+ 를 눌러) 창의 도킹을 해제하면 됩니다 U. 그러면 별도의 창에 창이 열립니다. 창을 닫으면 사라집니다. 실수로 이와 같은 창이 사라진 경우 메인 리본의 홈 탭 → 레이아웃 클릭 → 현재 폴더 활성화를 통해 복원할 수 있습니다. 창을 다시 도킹하려면 창 창의 오른쪽 상단에 있는 작은 화살표를 클릭하고 → 도킹을 클릭합니다(또는 Ctrl+ Shift+ 를 누릅니다 D). 현재 폴더를 왼쪽 상단의 탭에 넣었습니다.
  4. 현재 폴더 탭 옆에 작업공간을 배치했습니다. 해결되었습니다!
  5. ×노란색 팁 막대의 오른쪽 에 있는 을 클릭하기만 하면 됩니다 .
  6. 기본값으로 설정할 폴더를 선택하고 현재 폴더 창이나 주소 표시줄을 사용하여 해당 폴더를 찾습니다(위 스크린샷에서는 리본 바로 아래 드롭다운 목록에 라고 표시되어 있음 ► C: ►). 이를 기본 경로로 설정하려면 먼저 주소를 복사하세요. R2014b 이후 MATLAB 버전에서는 MATLAB 기본 설정에서 기본 현재 폴더를 설정할 수 있다고 생각합니다(리본 홈 탭 → 기본 설정 → 일반 기본 설정 → 초기 작업 폴더를 통해 찾으세요). 이전 버전을 사용하는 경우 다음을 사용하여 기본 MATLAB 현재 폴더를 설정할 수 있습니다.userpath(newpath)여기서 newpath는 복사한 경로입니다. 은 newpath문자열이어야 합니다. 즉 'single straight apostrophes', 로 묶어야 합니다. 복사한 "이중 아포스트로피"가 아니어야 합니다. 해결되었습니다!

명령 기록( 명령 창에서 눌러 액세스) 및 편집기( 명령 창에서 Ctrl+를 눌러 N열 수 있음)도 재배치되었습니다.

이 레이아웃을 저장하는 것이 좋습니다. 그러면 무언가 또는 누군가에 의해 변경된 경우(예: 여러 사용자가 동일한 MATLAB을 서로 다른 레이아웃으로 사용하는 경우) 쉽게 전환할 수 있습니다. 리본 홈 탭 → 레이아웃 → 레이아웃 저장 → 레이아웃 이름을 지정하여 이 작업을 수행합니다. <your layout name>MATLABLayout.xml이는 명령으로 찾을 수 있는 MATLAB 기본 설정 디렉터리에 호출되는 .xml 파일로 저장됩니다 prefdir. MATLAB의 모든 기본 설정, 명령 기록, 기본 레이아웃 등이 이 디렉터리에 저장됩니다. 이것은 이 답변의 두 번째 부분에 대한 매우 유용한 지식입니다!

전부는 아니지만 대부분의 다른 기본 설정도 여기에 저장됩니다.


이제 내 질문의 파트 2에 대한 답변인 내 답변의 두 번째 부분입니다.

2 부

사용자 정의 설정을 재설정한 컴퓨터에서 유지하기

무엇보다 먼저: 이 답변의 1부에 설명된 대로 모든 사용자 정의 설정을 적용하고 원하는 MATLAB 데스크탑에 대한 레이아웃을 저장하십시오.

startup.m이제 우리는 , finish.m및 몇 가지 .bat 파일을 영리하게 사용할 것입니다 .

startup.mMATLAB 경로에 있는 경우 MATLAB 창에 대한 제어권을 얻기 전에 시작 시 실행되는 파일입니다. 이 파일은 무엇이든 할 수 있는 스크립트입니다. 다음을 수행하는 방식으로 설정하겠습니다.

  1. 시작 후 원하는 디렉터리로 현재 폴더를 설정합니다.
  2. 이 답변의 1부에 저장된 기본 MATLAB 기본 설정을 우리 고유의 기본 설정으로 덮어씁니다.
  3. 자체 MATLAB 데스크탑 레이아웃을 복원합니다.

처음 두 단계가 가장 쉽습니다. 제 경우에는(업무용 컴퓨터에서) 컴퓨터를 다시 시작할 때마다 기본 경로를 잊어버렸습니다. 그래서 스크립트를 작성 startup.m하고 그 안에 다음 코드를 넣었습니다.

(이것이 들어간다 startup.m)

%% set path
p = 'C:\Whatever\path\you\want\as\your\default\Current Folder';
cd(p)

충분히 쉽습니다. p원하는 현재 폴더의 경로로 바꾸십시오 .

두 번째 단계는 더 어렵습니다. 명령을 사용하여 찾을 수 있는 MATLAB의 기본 설정 디렉터리에 모든 설정을 저장하고 복원해야 합니다 prefdir. 이를 위해 우리도 사용합니다 finish.m. MATLAB이 종료되기 직전에 자동으로 실행되는 스크립트입니다. MATLAB은 몇 가지 방법으로 종료할 수 있습니다. ×기본 MATLAB 창의 을 클릭하거나 또는 명령을 사용 exit합니다 quit. 알아두면 좋은 점: Windows 작업 관리자나 프로세스를 종료하는 다른 시스템 명령을 통해 MATLAB.exe를 종료하면 가 finish.m실행되지 않습니다. 가 MATLAB 경로에 있는지 확인하거나 위의 코드 조각에서 를 finish.m사용하여 MATLAB 경로에 경로를 추가하세요 . 그렇지 않으면 MATLAB이 종료될 때 실행되지 않습니다.addpathstartup.mfinish.m

finish.m귀하가 설정하거나 변경한 모든 기본 설정과 사용자 정의 레이아웃을 귀하에게 권한이 있는 폴더에 복사 해 드립니다 . 다음 코드는 이를 수행합니다.

(이것이 들어간다 finish.m)

%% backup MATLAB preferences, etc., see also: startup.m
p = 'path\to\your\preference backup folder';
copyfile([prefdir filesep '*'], p, 'f')

그러면 MATLAB 기본 설정 디렉터리의 모든 파일이 선택한 백업 폴더에 복사됩니다. 이제 startup.m이러한 파일을 복원하라고 지시합니다. 다른 것보다 먼저 실행되기 때문에 startup.m우리가 원하는 모든 설정을 훌륭하게 복원합니다. 다음 코드는 이를 수행합니다.

(이것이 들어간다 startup.m)

%% restore MATLAB preferences, etc., see also: finish.m
p = 'path\to\your\preference backup folder'; % end without a file separator, i.e. '/', '\' or filesep
copyfile([p filesep '*'], prefdir, 'f')

이 코드 조각은 에서 p와 동일한 디렉터리로 설정되어야 MATLAB이 파일을 복사할 위치를 알 수 있습니다.pfinish.m

목록의 세 번째 항목은 가장 복잡한 항목입니다. 이전 코드 조각을 사용하여 파일을 MATLAB의 기본 설정 디렉터리에 복사하는 것만으로 <your layout name>MATLABLayout.xml는 레이아웃을 복원할 수 없습니다. 프로그래밍 방식으로 복원해야 합니다. 게다가 내 상황에서는 레이아웃을 적용하기 전에 MATLAB을 다시 시작해야 했습니다. 이 작업은 다음 단계에 따라 수행됩니다.

나는 방법을 찾았다문서화되지 않은 MATLAB, MATLAB 개발자가 문서화하거나 지원하지 않는 다양한 MATLAB 기능을 설명하는 웹 사이트입니다. 사용하기 쉽지 않고 이상하게 행동할 수도 있지만 매우 강력한 일을 할 수 있습니다.

다음 코드는 이전에 <your layout name>MATLABLayout.xml.

(이것이 들어간다 startup.m)

%% restore your custom layout
layoutName = '<your layout name>';
desktop = com.mathworks.mde.desk.MLDesktop.getInstance;
desktop.restoreLayout(layoutName);

layoutName레이아웃 이름을 무엇이든 설정하세요 . 이제 MATLAB을 다시 시작하는 부분으로 넘어갑니다.

직장에서 컴퓨터를 재부팅할 때마다 MATLAB의 기본 설정이 재설정된다는 점을 기억하십시오. 기본 MATLAB 경로( path명령을 사용하여 찾을 수 있음)에는 쓰기 권한이 없는 디렉터리만 포함됩니다. 즉, MATLAB 경로에 startup.m및 를 추가할 수 없으므로 finish.m재부팅 후에도 그대로 유지됩니다. 이 문제를 어떻게 해결하나요? 깔끔한 MATLAB.exe 명령줄 트릭을 사용하여 startup.mMATLAB 경로의 폴더에 복사한 다음 startup.m수동으로 실행합니다.

재부팅 후 시작 메뉴의 MATLAB 바로가기도 재설정되므로 데스크탑의 .bat 파일을 사용하여 다음과 같이 MATLAB을 실행합니다.

(이것은 MATLAB.batWindows 바탕 화면이나 개인 폴더 등 쉽게 액세스할 수 있는 어디에나 배치할 수 있습니다.)

@echo off
start path\to\matlab.exe -r "copyfile('path\to\startup.m', matlabroot), startup"

그러면 MATLAB이 실행됩니다. 또한 는 -r시작이 완료된 후 "이중 아포스트로피" 사이에 다음에 오는 모든 항목을 실행하도록 MATLAB에 지시합니다(실행 후에도 startup.m존재한다면 제 상황에서는 그렇지 않습니다). 아포스트로피 사이의 부분은 startup.m우리가 생성한 스크립트를 MATLAB 경로의 위치(이 경우 )에 복사하도록 MATLAB에 지시하는 MATLAB 코드입니다 matlabroot. 이는 기본 MATLAB 경로의 다른 디렉터리일 수도 있고 addpath('path\to\add')MATLAB 경로에 경로를 추가하는 데 사용할 수도 있습니다 . 그러면 startup.m. 아포스트로피 사이의 마지막 명령은 단순히 호출이므로 startup.m실행됩니다.

이제 스크립트는 원하는 경로, 설정 및 레이아웃을 설정합니다. 한 가지 문제가 여전히 지속됩니다. 실제로 레이아웃을 변경하려면 MATLAB을 다시 시작해야 합니다. 이는 startup.m, finish.m및 두 번째 .bat 파일을 사용하여 수행됩니다 .

두 번째 .bat 파일은 명령줄을 통해 MATLAB을 종료하고 MATLAB을 다시 시작합니다. startup.m처음 시작된 것을 알고 나서 이 .bat 파일을 실행해야 합니다. finish.m이 지식을 정리해야합니다. 제가 한 일은 다음과 같습니다.

(이것이 들어간다 restartup.bat)

@echo off
taskkill /f /pid %1
start path\to\matlab.exe -r "copyfile('path\to\startup.m', matlabroot)"

보시다시피 는 아직 알려지지 않은( ) 프로세스 ID( ) taskkill를 가진 프로세스를 종료합니다 . 이 ID는 .bat 파일 호출 시 제공됩니다 . 그러나 레이아웃과 기본 설정을 복원하기 위해 MATLAB이 이미 다시 시작된 경우에는 이 호출이 발생해서는 안 됩니다. 따라서 이미 실행되고 있는 메모리를 만들어야 합니다. 나는 이것을 다음과 같이 했다.%1/pidstartup.mstartup.m

(이것이 들어간다 startup.m)

%% if startup hasn't run before, restart MATLAB
% sources:
% http://www.mathworks.com/matlabcentral/newsreader/view_thread/259557
% https://stackoverflow.com/a/92057

% this file is deleted by finish.m
name = 'hasStartedUp';
f = ['path\to\' name];
if ~exist(f,'file')
    fid = fopen(f,'wt'); % create an empty file
    fclose(fid);
    pid = num2str(feature('getpid')); % get MATLAB's process ID
    system(['path\to\restartup.bat ' pid]); % run restartup.bat
end

내가 제공한 메모리 startup.m는 존재하는 경우 MATLAB을 다시 시작하지 못하게 하는 파일입니다. 이 파일은 name. 현재 MATLAB의 프로세스 ID는 으로 얻습니다 num2str(feature('getpid')). 이는 차례로 의 호출로 전달되며 restartup.bat, 결과적으로 MATLAB 프로세스가 종료됩니다. 이 kill은 호출되지 않으므로 finish.m해당 스크립트에서 메모리 파일을 삭제합니다. 따라서 MATLAB이 정상적으로 종료되면 메모리 파일이 사라지고 MATLAB은 다음에 실행될 때 다시 시작한다는 것을 알고 있습니다.

(이것이 들어간다 finish.m)

%% delete memory file from startup.m
f = 'path\to\hasStartedUp';
if exist(f,'file')
    delete(f)
end

오랫동안 읽으면 보너스:여기를 읽어보세요startup.m화면 왼쪽에 기본 그림이 열리도록 편집한 방법입니다 . 이제 MATLAB의 기본 창은 화면 오른쪽 절반에 잘 배치될 수 있으며 Figure 창은 기본적으로 겹치지 않습니다.


이제 나는 두 가지 질문을 해결했고 이에 대한 답을 얻었습니다! 나는 이것이 매우 정교한 답변이므로 읽기 어렵다는 것을 이해합니다. 질문이 있으면 언제든지 질문하고 내 방법의 추가 개선에 대한 제안이 있는 의견을 게시하십시오.

관련 정보