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

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

Risposta accettata

Kojiro Saito
Kojiro Saito il 4 Set 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 Commento
daiki naito
daiki naito il 5 Set 2022
double型の配列のデータなので、data2(:, 2) = -1 * data2(:, 2);の方法で行うことができました。
ご対応いただきありがとうございました。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su データの前処理 in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!