CSVファイルの時系列演算
显示 更早的评论
1.のような、ある物質の温度変化の様子が1秒ごとに時系列的に並んでいるCSVデータが100枚ほどあります。このデータを用いて、2.のようなグラフを作りたいのですが、全ての点を折れ線グラフにすることは可能でしょうか?
写真のような物質の温度変化の様子を、1点1点全て折れ線グラフにしたいです。
10 个评论
plot(x,y)のあとに hold onと入力すると重ね書きができるのですべての点の折れ線グラフのグラフ化も可能と思います。
t = [0:10];
x = [sin(t); cos(t)];
figure;
plot(t,x(1,:))
hold on
plot(t,x(2,:))
海
2022-10-12
Keita Abe
2022-10-12
1つのファイル内にあるエクセルの点でも可能ですし,複数のエクセルファイルからデータを集約して可視化することも可能です。
複数ファイルのインポートに関してはこちらのリンクが参考になるかもしれません。
海
2022-10-13
例えばこんな感じでいかがでしょうか?複数ファイルの読み込みはこちらを参考にしました。
まずファイルのパスを取得します。
clc;clear;
Pathlists = dir("*.csv");
Mylists = (struct2cell(Pathlists))';
Mylists = string(Mylists(:,1:2));
MyPath = fullfile(Mylists(:,2),Mylists(:,1));
次に取得したパスのCSVを読みこんで1つのテーブルに再成型します。
T = readtable(MyPath(1));
TT = repmat(T,length(MyPath),1);
for i = 1:length(MyPath)
T = readtable(MyPath(i));
TT(i,:) = T(1,:);
end
最後にプロットをします。
plot(TT.t,TT.A, TT.t,TT.B)
最終的なひとまとまりのコードはこちらです。
clc;clear;
Pathlists = dir("*.csv");
Mylists = (struct2cell(Pathlists))';
Mylists = string(Mylists(:,1:2));
MyPath = fullfile(Mylists(:,2),Mylists(:,1));
T = readtable(MyPath(1));
TT = repmat(T,length(MyPath),1);
for i = 1:length(MyPath)
T = readtable(MyPath(i));
TT(i,:) = T(1,:);
end
plot(TT.t,TT.A, TT.t,TT.B)
海
2022-10-14
Keita Abe
2022-10-14
't', 'A', 'B'は先ほど例としてアップロードしたCSVファイルのタイトル行に相当します。なので,実際に読み込ませたいCSVのタイトル(変数名)に変更してください。
変数名ではなく,列番号でplotのX,Y軸を指定したい場合はplotの部分を次に置き換えてください。
% plot(TT.t,TT.A, TT.t,TT.B)
plot(TT{:,1},TT{:,2}, TT{:,1},TT{:,3})
海
2022-10-14
Keita Abe
2022-10-14
時間が入っているセルはB3, 温度を取得したいセルがB9ならたとえば,for ループ 以下を次のように書き換えてみてはいかがでしょうか?
for i = 1:length(MyPath)
M = readmatrix(MyPath(i),'OutputType','string','NumHeaderLines',0);
time = datetime(M{3,2});
temperature = str2double(M{9,2});
TT{i,1} = time;
TT{i,2} = temperature;
end
TT = cell2table(TT);
plot(TT{:,1},TT{:,2})
海
2022-10-17
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 スプレッドシート 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

