データ解析をするためにプロットを多数表示する。
4 次查看(过去 30 天)
显示 更早的评论
ライブスクリプト上でデータ解析を実施するのが目的です。
エクセル、CSV上のデータをMatlab上にインポートしました。
特定の列(データ名有)のデータが別の列データと相関やn次関数と近似できるかどうかを確認したいです。
関係性を可視化するためにプロット一覧を表示したいのですが、そのために有効手段はあるでしょうか?
3 个评论
采纳的回答
Hiroki Okawa
2020-2-21
编辑:Hiroki Okawa
2020-2-21
配列なのかTableによって、細かいコードは変わってきます。
データが二次元配列で、各列がデータだと仮定してみます。
data_x = 1 : 100;
data_y = rand(100, 50);
という1サンプル100点、50サンプルに対して、例えば相関係数であれば
mat_cc = corrcoef(data_y);
でそれぞれの組み合わせの相関係数が得られます。mat_cc(i, j) はdata_y(:, i)と data_y(:, j)の相関係数です。
ある列cに対して相関係数が最も高い列を一緒にプロットしたい場合、
c = 1; % 仮にc = 1と置きます。
[~, index] = max(mat_cc(c, :) - eye(50) * Inf);
% index = mat_cc(:, c) > 0.7; % 相関係数が0.7以上のものを全てプロットする場合はこのように。
figure;
plot(data_x, data_y(:, c), '-', data_x, data_y(:, index), '--');
title([num2str(c), '列目に対して最も相関係数が高い列: ', num2str(index)])
となります。
どのようなデータに対して、具体的にどのような処理を行い、どのようなグラフを示したいのかを示し、今どこで躓いているのかを教えていただけますとより具体的なアドバイスができるかもしれません。
3 个评论
Hiroki Okawa
2020-2-21
编辑:Hiroki Okawa
2020-2-21
綺麗にまとまっているデータですね!
今回必要なセンサーデータを table2array関数などで取り出せば、上記のcorrcoef関数が利用可能です。
data_y = table2array(T(:, 5:end)); % Tがエクセルから取り出したテーブル変数と仮定しています。
ちなみに、得られたインデックスindexから列名を取得したい場合、テーブル変数Tに対して
T.Properties.VariableNames{index}
となります。コマンドウィンドウに文字列で表示する場合は
disp([T.Properties.VariableNames{c}, ' に対して最も相関係数が高いセンサー: ', T.Properties.VariableNames{index}])
となります。これらをfor文で実行すれば各列分の処理ができます。
高いものから順番にn個見つけたい場合はmaxk関数もありますので、ぜひコードを書いてみてください。
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 スプレッドシート 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!