行列の正規化

26 ビュー (過去 30 日間)
英寿 野口
英寿 野口 2022 年 8 月 27 日
コメント済み: Akira Agata 2022 年 8 月 30 日
質問失礼します。
行列の正規化に関してです。
行列を0-1に正規化しようとする場合、列ごとに正規化が行われるかと思いますが、全体を一気に行うようなコマンドまたは方法はありますか。

採用された回答

Hernia Baby
Hernia Baby 2022 年 8 月 27 日
編集済み: Hernia Baby 2022 年 8 月 27 日
最小値で引いて、その最大値で割ればいけると思います
A = magic(3)
A = 3×3
8 1 6 3 5 7 4 9 2
normA = A - min(A(:));
normA = normA ./ max(normA(:))
normA = 3×3
0.8750 0 0.6250 0.2500 0.5000 0.7500 0.3750 1.0000 0.1250
  2 件のコメント
英寿 野口
英寿 野口 2022 年 8 月 28 日
Excelに移して一つ一つやっていたので助かりました。ありがとうございます。
Akira Agata
Akira Agata 2022 年 8 月 30 日
+1
これと同じ処理は、関数 rescale を使っても可能です。
% 行列の一例
A = magic(3);
% 関数 rescale で正規化
normA = rescale(A);
% 結果を表示して、Hernia Babyさんの結果と一致するか確認してみる
disp(normA)
0.8750 0 0.6250 0.2500 0.5000 0.7500 0.3750 1.0000 0.1250

サインインしてコメントする。

その他の回答 (1 件)

Atsushi Ueno
Atsushi Ueno 2022 年 8 月 27 日
「列毎に正規化されるなら列ベクトルに変換して入力する」方法はどうでしょう。
A = magic(3);
temp = normalize(A(:),'range');
normA = reshape(temp,size(A))
normA = 3×3
0.8750 0 0.6250 0.2500 0.5000 0.7500 0.3750 1.0000 0.1250
  1 件のコメント
英寿 野口
英寿 野口 2022 年 8 月 28 日
私にない発想でした。ありがとうございます。

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!