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

7 ビュー (過去 30 日間)
daiki naito
daiki naito 2022 年 9 月 4 日
コメント済み: daiki naito 2022 年 9 月 5 日
加速度、角速度計データの指定した列を、−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 Center および File Exchangeデータの前処理 についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!