How to calculate an output from each row of a matrix?
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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 Commenti
Risposta accettata
  Ayush Modi
      
 il 15 Apr 2024
        
      Modificato: Ayush Modi
      
 il 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:
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

