行列の正規化

28 次查看(过去 30 天)
英寿 野口
英寿 野口 2022-8-27
質問失礼します。
行列の正規化に関してです。
行列を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 CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!