[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Help filling an array

From: Xierxes
Subject: Help filling an array
Date: Sun, 27 May 2007 08:35:35 -0700 (PDT)

Hi all,

I have been teaching myself GNU Octave over the last week or so by using an
old MATLAB 5 book, the Octave manual and this mailing list. I have been
trying to develop a function that will calculate the area under a curve at
different locations (I am working with blast waves and need to calculate the
areas under the initial and reflected waves). It is working quite well
except that I cannot fill the final array with results unless I use a for
loop. I am sure it can be done better, and I was hoping that somebody may be
able to assist and point me in the right direction.  I have attached a code
snippet below:

% get the min and max limits for trapz
% This bit works as expected - provides the index of the min/max time to
limits = [indzero(f1(1:end));indzero(f1(1:end)+1)]' 

% Calculate the impulse of each phase and store it in the array
% t and p are vectors containing the time and pressure information
n = length(limits);
imp = [trapz(t(limits(1:end,1):limits(1:end,2)),

% This snippet works, but uses a for loop - but I am sure that I can do it
more efficiently
% even though the limits matrix will generally not have more than 10 rows
        for i = 1:n
                m = limits(i,1);  % get the min limit index
                mx = limits(i,2); % get the max limit index
                imp(i,1) = [trapz(t(m:mx),p(m:mx))];

I am enjoying getting back into some coding (and besides is more fun than
writing my thesis :)), and would love to solve this problem (if it is worth
it). Any help would be appreciated,

View this message in context:
Sent from the Octave - General mailing list archive at

reply via email to

[Prev in Thread] Current Thread [Next in Thread]