MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Ted oscar
on 28 Dec 2011

C SUBROUTINE: LREMV C THIS SUBROUTINE CAN REMOVE THE DC COMPONENT AND SLOPE OF AN ARRAY OF C DATA IF DESIRED C------------------------------------------------------------------ SUBROUTINE LREMV (XX, NNN, ISWCH, DC, SLOPE) C C INPUT: XX = INPUT DATA ARRAY C NNN = NUMBER OF POINTS IN DATA ARRAY C ISWCH = 0 DO NOT REMOVE DC COMPONENT OR SLOPE C = 1 REMOVE THE DC COMPONENT C > 1 REMOVE THE DC COMPONENT AND SLOPE C OUTPUT: DC = DC COMPONENT OF DATA C SLOPE = SLOPE OF DATA C IMPLICIT DOUBLE PRECISION (A-H,O-Z) DIMENSION XX(16384) C C ESTABLISH CONSTANTS C FLN = FLOAT(NNN) DC = 0.0 SLOPE = 0.0 C DO 10 I=1,NNN DC = DC + XX(I) SLOPE = SLOPE + XX(I)*FLOAT(I) 10 CONTINUE C C COMPUTE STATISTICS C DC = DC/FLN SLOPE = 12.0*SLOPE/(FLN*(FLN*FLN-1.0)) - 6.0*DC/(FLN-1.0) C C DETERMINE KIND OF TREND REMOVAL C IF (ISWCH-1) 60, 40, 20 C C REMOVE TREND (MEAN AND SLOPE) C 20 CONTINUE FLN = DC - 0.5*(FLN+1.0)*SLOPE DO 30 I=1,NNN XX(I) = XX(I) - FLOAT(I)*SLOPE - FLN 30 CONTINUE GO TO 60 C C REMOVE THE DC COMPONENT C 40 CONTINUE DO 50 I=1,NNN XX(I) = XX(I) - DC 50 CONTINUE C 60 RETURN END

*No products are associated with this question.*

Answer by Walter Roberson
on 28 Dec 2011

Accepted answer

Show 4 older comments

Derek O'Connor
on 29 Dec 2011

Ah! The good old days, with FORTRAN's computed GO TO. How have we managed to do without it for the last 40 years? I'd love to know when this subroutine was written.

Walter Roberson
on 29 Dec 2011

5-3-84 or earlier according to the source. See pdf page 308 of http://dspace.mit.edu/bitstream/handle/1721.1/33805/15674832.pdf?sequence=1

They were extracted from Programs for Digital Signal Processing, which was published (IEEE Press) 1979, revised 1981, so with the 1984 source date we can safely assume a later revision date for the section, but we cannot tell where in 1979 to 1984 that particular routine was written.

Only 25 to 30 years, Derek ;-)

Besides, it isn't a Computed GOTO, it is an Arithmetic IF

http://www-linac.kek.jp/cont/langinfo/web/Fortran/docs/lrm/lrm0128.htm#arith_if_stmt

## 1 Comment

## Sebastian Schaefer (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/24840#comment_54933

What is your question? Do you want to implement this algorithm with MATLAB code? How far have you got? An alternative would be to compile this code to a Fortran mexfile for MATLAB.