入出館のデータから滞在人数のグラフを作る方法

添付csvの入出館のデータから、滞在人数の線グラフ(横軸10分単位の時間、縦軸滞在人数)を作ることはできるでしょうか?
1日悩んだのですが、どうにも判りません。(もしかしたら出来ないのかも)
よろしくお願いいたします。

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 6월 1일

1 개 추천

isbetween 関数を使えば、日付と時刻の区間内の要素を判別出来ます。
data = readtable('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1399879/Book1.csv');
Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names for the table. The original column headers are saved in the VariableDescriptions property.
Set 'VariableNamingRule' to 'preserve' to use the original column headers as table variable names.
for k = 1:height(data) % 入退室それぞれの日付と時刻をくっ付ける(もっと上手いやり方があるはず)
data2(k,1) = datetime(strcat(string(data{k,1})," ",string(data{k,2})),'InputFormat','yyyy/MM/dd HH:mm:ss');
data2(k,2) = datetime(strcat(string(data{k,3})," ",string(data{k,4})),'InputFormat','yyyy/MM/dd HH:mm:ss');
end
number = [];
for tm = min(data2(:)):minutes(10):max(data2(:)) % 10分おきに何人居るか数える
number = [number sum(isbetween(tm,data2(:,1),data2(:,2)))];
end
stairs(min(data2(:)):minutes(10):max(data2(:)),number); % 階段状の線プロット

댓글 수: 3

Kazu Ari
Kazu Ari 2023년 6월 1일
이동: Atsushi Ueno 2023년 6월 2일
ありがとうございます。
多分無理だろう、と思っていた事が出来るとは。
関数があることも、それを使うアイデアも素晴らしいです。
Atsushi Ueno
Atsushi Ueno 2023년 6월 2일
プログラムを見直し for 文を除去等、上手いやり方にしました。MATLABで for 文使ったら負け🤔
data = readtable('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1399879/Book1.csv');
data2 = datetime(data{:,[1 3]},'InputFormat','yyyy/MM/dd') + data{:,[2 4]}; % 入退室それぞれの日付と時刻をくっ付ける
tmslc = min(data2(:)):minutes(10):max(data2(:)); % 10分おきのタイムスライス
number = sum(isbetween(tmslc,data2(:,1),data2(:,2))); % 何人居るか数える
stairs(tmslc,number); % 階段状の線プロット
Kazu Ari
Kazu Ari 2023년 6월 6일
有難うございます。
「MATLABでfor文をつかったら負け」
これが気になってしまい、他で作成中のスクリプトの見直しに入ってしまいました。
VBAから始めたのでどうしてもfor文を使ってしまうんですよね。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품

릴리스

R2021b

질문:

2023년 6월 1일

댓글:

2023년 6월 6일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!