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

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

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu データ型の識別 finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!