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

 채택된 답변

Hernia Baby
Hernia Baby 2022년 8월 27일
편집: Hernia Baby 2022년 8월 27일

0 개 추천

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

0 개 추천

「列毎に正規化されるなら列ベクトルに変換して入力する」方法はどうでしょう。
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일
私にない発想でした。ありがとうございます。

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 数学에 대해 자세히 알아보기

제품

태그

질문:

2022년 8월 27일

댓글:

2022년 8월 30일

Community Treasure Hunt

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

Start Hunting!