【MATLAB】변수를 스크립트에 저장

13949 단어 변수QiitaAPImatlab

변수를 스크립트에 저장?



MATLAB에서 계산 결과를 저장할 때 MAT 파일, Excel 등의 파일에 저장하는 것이 좋을 것이라고 생각하지만 변수의 유형에 따라 스크립트에 내보낼 수 있습니다. 요점은 실행하면 그 변수가 만들어지는 스크립트. MATLAB을 사용해 10년 정도가 됩니다만, 요전에 처음으로 도움이 되었습니다··그 밖에도 도움이 되는 씬은 있을 것! 라는 것으로, 소개.

이런 경우에 사용하고 있습니다 ・사용했어, 등 있으면 코멘트란에서 꼭 공유해 주세요.

방법 1: GUI



작업 공간에 저장할 변수를 '오른쪽 클릭'->



다른 이름으로 저장 -> MATLAB 스크립트 (* .m)를 선택하면 · ·



이런 느낌. 저장할 수 없는 클래스나 객체의 경우나, 배열 사이즈가 너무 큰 경우는, mat 파일에 보존되어 그것을 읽어들이는 m 파일이 완성됩니다.

방법 2: 명령



물론 명령에서도 마찬가지입니다. Var1 저장하면

matlab.io.saveVariablesToScript('mydata.m','Var1')

자세한 내용은 여기 : MATLAB 스크립트에 작업 공간 변수 저장

작업 공간 설정 화면



"설정"에도 관련 항목이 있습니다.



,, 뭐가 기뻐?



파일에서 읽고 싶지 않을 때 쉽게 변수를 재현 할 수 있습니다. 몇 개의 데이터라면 필기해도 좋지만, 많아지면 힘들다.
예를 들어 ThingSpeak 의 MATLAB Analysis 에서 사용하고 싶은 변수가 있다든가, MATLAB Answers 에 샘플 코드 들었을 때라든가, C 코드 생성할 때 변수를 m 코드에 직접 쓰고 싶다든가? 그렇게 하지?



이번 사용한 예(에 가까운 것)를 참고까지.
Qiita의 MATLAB 태그가 붙은 기사, 월간 투고수를 정기적으로 플롯을 표시하는 구조를 만들기로 했습니다.



매번 Qiita API를 두드려 모든 투고의 투고일 데이터를 취할 수도 있습니다만, 기사가 대량으로 되면 별로 현실적이지 않고, API도 너무 사용하면 어쩐지 죄송합니다. MATLAB 태그라면 데이터량도 아직 알려져 있습니다만.

그래서 ThingSpeak와 같은 시스템에서 현시점으로부터의 투고 총수는 정기적으로 보존하고 있다고 해서, 지금까지의 월간 투고수의 데이터는 스크립트에 기입해 두기로 했습니다.

getBarChart.m

% Historical data: 2011/10/1 - 2019/10/31
counts = [1; 2; 0; 0; 0; 0; 0; 2; 0; 0; 0; 1; 1; 1; 3; 1; 1; 0; 0; 1; 0; 0; ...
     0; 0; 0; 1; 0; 0; 2; 4; 3; 1; 1; 3; 2; 0; 1; 4; 2; 2; 0; 0; 1; 2; ...
     5; 5; 2; 2; 4; 5; 7; 2; 1; 1; 1; 6; 2; 2; 2; 5; 6; 9; 2; 6; 5; 4; ...
     3; 3; 5; 7; 10; 2; 7; 50; 11; 4; 9; 4; 5; 4; 15; 13; 9; 13; 11; 7; ...
     13; 3; 8; 8; 2; 7; 6; 4; 32; 23; 24];
xmonths = datetime(2011,10,1) + calmonths(0:(length(counts)-1))';
bar(xmonths,counts,1)
grid on

서두의 counts 부분이 스크립트에 보존 기능을 사용해 생긴 스크립트로부터 복사한 부분. 덧붙여서 투고 총수는 이런 느낌으로 취득합니다.

getTotalCount.m

url = "https://qiita.com/api/v2/tags/matlab";
tmp = webread(url);

요약



변수의 스크립트 저장을 소개했습니다. 수수함.
여러분의 「이런 곳에서 도움이 되었다!」가 있으면 코멘트해 주십시오.

그건 그렇고, R2019b를 사용하고 있습니다.

Appendix: 월간 게시물 수를 집계하여 막대 그래프 그리기 코드



모든 투고의 투고일 데이터를 취해, 월간 투고수에 집계해 플롯 하는 코드 전문.

getMonthlyChart.m

accessToken = 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxx'; % ダミートークン
opts = weboptions('HeaderFields',{'Authorization',accessToken});
% opts = weboptions; % トークン使用しない場合

item_list = table;
index = 0;
while true
    index = index + 1;
    % 100件ずつ取得します。
    url = "https://qiita.com/api/v2/tags/matlab/items?page="+index+"&per_page=100";
    tmp = webread(url,opts);

    if isempty(tmp) % 終了条件
        break
    end

    created_at = datetime(vertcat(tmp.created_at),...
        'InputFormat', "uuuu-MM-dd'T'HH:mm:ss'+09:00");
    N = length(created_at);
    tmp = table(created_at, ones(N,1), ...
        'VariableNames',{'created_at','count'});
    item_list = [item_list; tmp]; % item_list に追加
end

% 月間データに集計
titem_list = table2timetable(item_list,'RowTimes','created_at');
monthlyitem = retime(titem_list,'monthly','count');

% 棒グラフ表示
x = monthlyitem.created_at;
y = monthlyitem.count;
bar(x,y,1);
grid on
title('MATLAB tag: 月間投稿数');

좋은 웹페이지 즐겨찾기