質問失礼します。
行列の正規化に関してです。
行列を0-1に正規化しようとする場合、列ごとに正規化が行われるかと思いますが、全体を一気に行うようなコマンドまたは方法はありますか。

 Respuesta aceptada

Hernia Baby
Hernia Baby el 27 de Ag. de 2022
Editada: Hernia Baby el 27 de Ag. de 2022

0 votos

最小値で引いて、その最大値で割ればいけると思います
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 comentarios

英寿 野口
英寿 野口 el 28 de Ag. de 2022
Excelに移して一つ一つやっていたので助かりました。ありがとうございます。
Akira Agata
Akira Agata el 30 de Ag. de 2022
+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

Iniciar sesión para comentar.

Más respuestas (1)

Atsushi Ueno
Atsushi Ueno el 27 de Ag. de 2022

0 votos

「列毎に正規化されるなら列ベクトルに変換して入力する」方法はどうでしょう。
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 comentario

英寿 野口
英寿 野口 el 28 de Ag. de 2022
私にない発想でした。ありがとうございます。

Iniciar sesión para comentar.

Categorías

Más información sobre 数学 en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 27 de Ag. de 2022

Comentada:

el 30 de Ag. de 2022

Community Treasure Hunt

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

Start Hunting!