行列の指定した列のみ乗算して、元の行列に戻す方法

7 views (last 30 days)
daiki naito
daiki naito on 4 Sep 2022
Commented: daiki naito on 5 Sep 2022
加速度、角速度計データの指定した列を、−1倍してまた元の行列に戻す方法を教えていただきたいです。
例えば、加速度、角速度計で計測した1000×6の時系列データがあるとすると、
2列目を−1倍して、元の1000×6の行列に戻し、他の解析を行うという形です。

Accepted Answer

Kojiro Saito
Kojiro Saito on 4 Sep 2022
1000x6の時系列データのデータ型によって少しやり方が変わります。
テーブル(table)の場合
2列目の列名がわかっていれば(例えばcol2として)、data.col2 = -1 * data.col2ででき、列名が分からなければdata(:, 2).Variables = -1 * data(:, 2).Variablesでマイナス1倍を掛けられます。同じ変数dataに対して実行することで、元の行列に2列目だけマイナス1倍したものが上書きされます。
コード例
% ダミーデータの生成
col1 = rand(1000, 1);
col2 = rand(1000, 1);
col3 = rand(1000, 1);
col4 = rand(1000, 1);
col5 = rand(1000, 1);
col6 = rand(1000, 1);
data = table(col1, col2, col3, col4, col5, col6);
% 2列目だけマイナス1倍する
data(:, 2).Variables = -1 * data(:, 2).Variables;
% または列名が分かっていれば以下のようなやり方でもOK
% data.col2 = -1 * data.col2;
配列(doubleなど)の場合
時系列データがテーブルではない場合、例えばdouble型の配列担っている場合は、data2(:, 2) = -1 * data2(:, 2)で可能です。
% ダミーデータの生成
col1 = rand(1000, 1);
col2 = rand(1000, 1);
col3 = rand(1000, 1);
col4 = rand(1000, 1);
col5 = rand(1000, 1);
col6 = rand(1000, 1);
data2 = [col1, col2, col3, col4, col5, col6];
% 2列目だけマイナス1倍する
data2(:, 2) = -1 * data2(:, 2);
  1 Comment
daiki naito
daiki naito on 5 Sep 2022
double型の配列のデータなので、data2(:, 2) = -1 * data2(:, 2);の方法で行うことができました。
ご対応いただきありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!