Matrix integral over layers
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello! I have a matrix in it the number of steps per time. Is it possible to integrate each column of the matrix layer by layer (layer sizes may differ)
MatrixHelpStep=rand(30,40);
layer=(1:5:30); % for example, I took layer 5 (but it can change)
% trying to create a loop for layers
for i=1:length(layer)-1
Imhs=trapz(MatrixHelpStep(layer(i):layer(i)+1))
end
it gives me only one value
4 Commenti
Walter Roberson
il 17 Lug 2020
Could you confirm that you want overlap? trapz(x(1:5,1)) uses 5 elements to form the output, but trapz(x(5:10,1)) uses 6 elements to form the output. Are you wanting 1:5, 6:10, 11:15, 16:20 and so on?
Risposte (1)
Bjorn Gustavsson
il 17 Lug 2020
For this I would try cumtrapz - it calculates the cumulative (sp?) trapezoidal integral in the same manner as cumsum calculates the cumulative sum along an array. Doing that would give you the cumulative integrals of your matrix with the same size as your matrix. That way you can easily calculate every following integral between 2 boundaries from that one just by taking the difference between the corresponding boundary-elements. Something like this:
I = peaks(40);
I = I(1:30,:);
ciI = cumtrapz(I);
i10to17ofI = ciI(17,:) - ciI(10,:);
HTH
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!