How to calculate an output from each row of a matrix?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Benjamin
am 15 Apr. 2024
Kommentiert: Benjamin
am 15 Apr. 2024
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
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!
0 Kommentare
Akzeptierte Antwort
Ayush Modi
am 15 Apr. 2024
Bearbeitet: Ayush Modi
am 15 Apr. 2024
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:
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!