MATLAB Answers


How do I integrate this set of matrix data points

I have a matrix diffphi which is a 32x32 matrix. I want to integrate this using trapz in the following manner:
for every row namely k, I want to integrate diffphi(k,1:2) over 1:2 and , then diff(k,1:3) over 1:3, .... diff(k,1:32) over 1:32 then store all values in a new matrix called ophi which will be a 32x32 matrix. How should I do it?
Here is something that I tried:
if true
% code
ophi = zeros(32,32);
for h = 1:32
for d = 1:32
c = 1:d;
ophi(h,d) = trapz(c,diffphi(h,(1:d)));
But it shows the following error:
Error in ipermute (line 23) inverseorder(order) = 1:numel(order); % Inverse permutation order
Error in trapz (line 73)
Thanks in advance. if ~isempty(perm), z = ipermute(z,perm); end

  댓글 수: 0

로그인 to comment.

답변 수: 1

Answer by Massimo Zanetti on 24 Feb 2017
 Accepted Answer

You just need one for loop as trapz operates also on matrices. This is the piece of code:
A = rand(32);
B = zeros(32);
for c = 1:size(A,2)
B(:,c) = trapz(1:c,A(:,1:c),2);

  댓글 수: 2

I need to integrate every row, vary the indices and store it in a 32x32 matrix. But still thanks, as I modified this a bit to get to the result. I actually need 2 for loops.
The code above does EXACTLY what you need, it integrates every row by varying the row length and stroes everything in a 32x32 matrix B. You DON'T need two for loops.
Check carefully trapz help page.

로그인 to comment.

Translated by