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

 Akzeptierte Antwort

Hernia Baby
Hernia Baby am 27 Aug. 2022
Bearbeitet: Hernia Baby am 27 Aug. 2022

0 Stimmen

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

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Atsushi Ueno
Atsushi Ueno am 27 Aug. 2022

0 Stimmen

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

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 数学 finden Sie in Hilfe-Center und File Exchange

Produkte

Tags

Community Treasure Hunt

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

Start Hunting!