How to calculate an output from each row of a matrix?

조회 수: 5 (최근 30일)
Benjamin
Benjamin 2024년 4월 15일
댓글: Benjamin 2024년 4월 15일
I have a 5000x5000 matrix A, and I want to calculate the difference between the minimum and maximum of each row as a percentage of the largest value. I already know how to do this for a single row:
percentage = abs((min(A(1000,:))-max(A(1000,:)))./max(A(1000,:)))*100
Unrecognized function or variable 'A'.
The issue I have is that I can't work out how to iterate this function over every row of A. I've tried using an anonymous function:
x = linspace(1:5000)
q = @(x) abs((min(A(x,:))-max(A(x,:)))./max(A(x,:)))*100
q(x)
But this didn't work at all.
Any ideas on how I might iterate the percentage function for every row of the matrix? Also, I need to plot the output of the percentage function against the row number.
Thanks!

채택된 답변

Ayush Modi
Ayush Modi 2024년 4월 15일
편집: Ayush Modi 2024년 4월 15일
Hi Benjamin,
You can calculate the difference between the minimum and maximum of each row without anonymous function. See below:
minVals = min(A, [], 2); % Minimum of each row
maxVals = max(A, [], 2); % Maximum of each row
percentage = abs((minVals - maxVals) ./ maxVals) * 100;
rowNumbers = 1:5000; % Row numbers
plot(rowNumbers, percentage);
MATLAB performs the "min" and "max" calculation for each row and stores the array in minVals and maxVals.
% Syntax to perform the min and max calculation dimension-wise
min(A,[],dim) % returns the minimum element along dimension dim. For example, if A is a matrix, then min(A,[],2) returns a column vector containing the minimum value of each row.
% Same for max.
Please refer to the following MathWorks documentation for more information on:

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by