MATLABのグラフを横軸を時間軸にしたい
Q&A
解決したいこと
センサデータのcsvファイルをMATLABで読み取り,箱ひげ図と折れ線グラフを表示させたときにグラフの横軸を時間にしたいです。
↑記録したcsvファイルの例です。
時刻(時:分:秒),(コンマ)センサデータ
になっています。
時刻の後の9列のうち1か所だけにセンサデータが入る仕組みです。
列ごとに色を変えたグラフにします。
このコンマより前にある時間を使い横軸をグラフにしたです。
発生している問題・エラー
このように最初からエラーが出てしまいます。
最初のreadmatrixが数値専用なのでダメなのかなと思っています。
次に考えられるのがreadcellかreadtableかreadtimetableだと思うのですが使い慣れておらずこのプログラムを完成することが出来ません。
該当するソースコード
RawData = readmatrix('2023 0110 14_001.csv');
Data= (RawData);
a=Data(:,2);
time = Data(:,1);
t = datetime(time,'inputFormat','HH:mm:ss');
d=t-t(0);
d.Format = 's';
figure(1);
findpeaks(a,'MinPeakHeight',-150)
title('Car:red LGV:pink SUV:green Bus:blue HGV:Cyan Taxi:Black')
xlabel('time','FontSize',35)
ylabel('distance','FontSize',35)
RawData(RawData<50)=NaN;
RawData(RawData>=350)=NaN;
b=RawData(:,3);
M1 = mean(b,'omitnan');
N1=mode(b);
c=RawData(:,4);
M2 = mean(c,'omitnan');
N2=mode(c);
d=RawData(:,5);
M3 = mean(d,'omitnan');
N3=mode(d);
e=RawData(:,6);
M4 = mean(e,'omitnan');
N4=mode(e);
f=RawData(:,7);
M5 = mean(f,'omitnan');
N5=mode(f);
g=RawData(:,8);
M6 = mean(g,'omitnan');
N6=mode(g);
DataM = [M1,M2,M3,M4,M5,M6];
DataN = [N1,N2,N3,N4,N5,N6]
set(gca,'FontSize',24)
hold on
b=Data(:,3);
plot(time,b,'-r*','LineWidth',2)
findpeaks(b,'MinPeakHeight',-150)
c=Data(:,4);
plot(time,c,'-m*','LineWidth',2)
findpeaks(c,'MinPeakHeight',-150)
d=Data(:,5);
plot(time,d,'-g*','LineWidth',2)
findpeaks(d,'MinPeakHeight',-150)
e=Data(:,6);
plot(time,e,'-b*','LineWidth',2)
findpeaks(e,'MinPeakHeight',-150)
f=Data(:,7);
plot(time,f,'-c*','LineWidth',2)
findpeaks(f,'MinPeakHeight',-150)
g=Data(:,8);
plot(time,g,'-k*','LineWidth',2)
findpeaks(g,'MinPeakHeight',-150)
hold off
RawData(:,2) = [];
figure(2);
boxplot(RawData);
ylim([130,300])
xticks([1 2 3 4 5 6])
xticklabels({'Car','LGV','SUV','Bus','HGV','Taxi'})
xlabel('category','FontSize',44)
ylabel('distance','FontSize',40)
set(gca,'FontSize',24)
hold on
plot(DataM,'+');
plot(DataN,'o');
hold off