How to normalize rows of a matrix?
조회 수: 13 (최근 30일)
이전 댓글 표시
I have a matrix called aefm_1 that is 184 x 5119 where each row indicates a signal vector and each column is a time step and each value in the signal vector indicates amplitude at that time step. I want to write a loop that normalizes each signal vector in the matrix from -1 to 1 based on the maximum amplitude for each row. When I try to use the code below, it outputs only a singal vector of dimensions 1 x 5119. In the end, I want an output that is still 184 x 5119. How do I do that?
for i=1:size(aefm_1,1)
aefm_2 = aefm_1(i,:)./max(abs(aefm_1(i,:)));
end
댓글 수: 0
채택된 답변
Geoff Hayes
2020년 8월 19일
Kimberley - your code is overwriting the value that was assigned to aefm_2 on the previous iteration
aefm_2 = aefm_1(i,:)./max(abs(aefm_1(i,:)));
You will need to set this variable to be an array with the same dimensions as aefm_1 and then update each row of it. Alternatively, you could probably do this in a single line of code without a loop.
aefm_2 = aefm_1 ./ max(abs(aefm_1), [], 2);
댓글 수: 0
추가 답변 (1개)
Steven Lord
2020년 8월 19일
Are you required to use a loop? If not, take a look at the normalize function.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!