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

8 次查看(过去 30 天)
daiki naito
daiki naito 2022-9-4
加速度、角速度計データの指定した列を、−1倍してまた元の行列に戻す方法を教えていただきたいです。
例えば、加速度、角速度計で計測した1000×6の時系列データがあるとすると、
2列目を−1倍して、元の1000×6の行列に戻し、他の解析を行うという形です。

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 データの前処理 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!