Hwo to normalize a Matrix ?
古いコメントを表示
what is the code to normalize a random complex matrix H according to the following formula:

採用された回答
その他の回答 (2 件)
Image Analyst
2021 年 8 月 15 日
編集済み: Image Analyst
2022 年 1 月 25 日
Well I don't know about complex numbers, but for a normal, real valued matrix, you can use the rescale() function, introduced in r2017b:
h = rescale(h, 0, 1);
3 件のコメント
RT Student
2021 年 8 月 16 日
Fabio Freschi
2021 年 8 月 16 日
@Image Analyst suggested
H=rescale(H,0,1); % 0 as second input, 1 as third input
Howewer rescale apply rescaling with respecto to the matrix min and max, while the formula refers to the min and max along each row. See also my answer
Image Analyst
2021 年 8 月 16 日
@RT Student the code you gave worked just fine. No error at all. Even when I correct rescale(H, 1, 0) to what I had, rescale(H, 0, 1) it still works.
However Fabio is right - the formula normalizes on a row-by-row basis, not globally like my solution did.
His answer is good and more closely follows your formula. Thanks for accepting it. If you wanted to use the built-in rescale(), you'd have to do it on a row-by-row basis:
% Create data. Note, because of abs() it is all real valued.
H = abs(sqrt(1/2)*(randn(16,4)+1j*randn(16,4)))
% Rescales to global min and max.
%H = rescale(H, 0, 1)
% Rescales min and max to 0-1 on a row-by-row basis.
for row = 1 : size(H, 1)
H(row, :) = rescale(H(row, :), 0, 1);
end
Steven Lord
2021 年 8 月 16 日
0 投票
Take a look at the normalize function.
カテゴリ
ヘルプ センター および File Exchange で Linear Algebra についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
