MATLAB에서 스터버 후드를 선택하세요.

스타바에 가서 일하자.



평소와 같이 파이크 플레이스의 그란데를 부탁한 것은 좋지만, 어쨌든 일하면서 일을 하고 싶은 생각도 합니다. 애플 파이가 있으면 일택입니다만, 가을 한정이었습니다.

함께 간 사람의 의식이 높다.



"저, 오늘의 칼로리는 남은 200kcal 밖에 취할 수 없지만, 무엇이 좋은가."
 「・・・」

그렇다면 커피만으로도 괜찮아요.
여기에 여러가지 정보가 있을 것 같네요.
htps //w w. s r 부 cks. 이. jp/아ㅇrgy/

MATLAB을 사용하면 websave를 명령으로 저장할 수 있습니다. 칼로리 다음에 단백질, 지질, 탄수화물, 염분도 취해 버립니다.
%% ウェブから持ってこよう。
url = "https://www.starbucks.co.jp/assets/images/web2/images/allergy/pdf/allergen-food.pdf";
websave('starbucks_food.pdf',url)

%% 関連しそうな文字列をごっそり取り出す。
D = extractFileText('starbucks_food.pdf');
D = extractBetween(D,"食塩相当量(g)","お問い合わせ先");
D = replace(D,newline,' ');
X = regexp(D,'[^0-9]+ [0-9.]+ [0-9.]+ [0-9.]+ [0-9.]+ [0-9.]+','match');

%% テーブルを作ろうね
for n = 1:length(X)
    spl = split(X(n));
    Name(n,1) = join(spl(1:end-5));
    Energy(n,1) = double(spl(end-4));
    Protein(n,1) = double(spl(end-3));
    Fat(n,1) = double(spl(end-2));
    Carbo(n,1) = double(spl(end-1));
    Salt(n,1) = double(spl(end));
end

T = table(Name,Energy,Protein,Fat,Carbo,Salt);

%% 表示
T = sortrows(T,'Energy');
X = reordercats(categorical(T.Name),T.Name);
h = barh(X,T.Energy);

hold on  % 限界 200kcal の線
y = ones(size(X)) * 200;
plot(y,X,'LineWidth',5,'Color','g')
hold off

% 200を超えたやつは、危険な赤色で塗っておこう。
h.FaceColor = 'flat';
idx = h.CData(T.Energy > 200,:);
[m,n] = size(idx);
h.CData(T.Energy > 200,:) = repmat([1 0 0],m,1);

extract** 는 Text Analytics Toolbox 의 함수군요.
 rexexp 는\d라든지 사용해도 숫자를 취할 수 있지만, 6장들이! 같은 전각 숫자도 취해 버리므로, [0-9.] 라고 써 반각의 숫자와 마침표만 취합시다.

이런 결과가 나오면 안심.



맨 위의 슈톨렌 대단해. 우선 아래의 13개 정도에서 선택하면 좋다.

추가 요청이 있습니다.



「일단 13개로 짜냈으니까, 적당히 선택해.」
"최근, 염분도 앞두고 있기 때문에, 염분 0.2g 미만의 것이 좋다."
 「・・・」

주문을 반복해 주면서, 커맨드에라도 쳐 봅시다.
% カロリーが 200kcal 未満で、塩分が 0.2g 未満。
Res = T.Name(T.Energy < 200 & T.Salt < 0.2)

명령 창을 보자.
Res = 

  4×1 の string 配列

    " パッケージフード アフターコーヒーミント(ペパーミント)"
    " パッケージフード ホワイトチョコレートマシュマロ"
    " パッケージフード エスプレッソビーンズチョコレート"
    " デザート クランベリーブリスバー"

민트가 싫어한다.



"4종류 있었어. 페퍼민트의 녀석과···"
"민트 싫어합니다만! 민트는 그 플리스크 같은 녀석이지요. 그렇다고 입이 냄새가 나는 사람이 먹는 녀석이잖아! 민트 이외에서 지방분이 가장 적은 녀석이 좋다!"
 「・・・」

편견은 제쳐두고, 문자는 contains 로 알기 때문에 민트 이외를 취하면 좋다.
% カロリーが 200kcal 未満で、塩分が 0.2g 未満で、ミント嫌い。。
Res = T(T.Energy < 200 & T.Salt < 0.2 & ~contains(T.Name,'ミント'),:);
[~,idx] = min(Res.Fat);   % その中で一番脂質が少ない。
Res.Name(idx)
ans = 

    " パッケージフード ホワイトチョコレートマシュマロ"

마시멜로에서 좋은가?



"마시멜로 사왔어"



"귀여워! 이것 크리스마스 트리에 장식하니까, 둘째로 지방분이 적은 녀석 사오고!"
 「・・・」

지질순으로 재 배열해, 2번째를 취하면 좋다.
%% 二番目に脂質が低い。
R = sortrows(Res,'Fat');
R.Name(2)
ans = 

    " デザート クランベリーブリスバー"

브리스 바는 무엇입니까.



"크랜베리 브리스바라는 걸 사왔어"



"맛있다! 이것 의외로 칼로리 낮네."

좋았다, 일안심.

그래프 속에서는 어느 것이었습니까?



플롯이 남아 있으면, 이런 느낌을 추기해 확인하자.
%% 図で見てみよう。
idx = find(h.XData == R.Name(2));
text(h.YData(idx),idx,'← これ','FontSize',24,'FontName','Yu Gothic UI');



발견하는 것이 좋았습니다.



MATLAB 연습에는 딱 좋은 정도의 문제군요.
 그럼 일할까. . .

좋은 웹페이지 즐겨찾기