C++编程指南:从基础到实践优化

需积分: 0 5 下载量 105 浏览量 更新于2024-08-02 收藏 573KB PDF 举报
高质量C++/C编程指南是一份全面的教程,旨在帮助开发者编写高效、可读性强且符合最佳实践的C++或C程序。这份指南由林锐博士编撰,完成于2001年7月24日,主要涵盖以下几个核心主题: 1. **文件结构**: - 指出了版权和版本声明的重要性,以及如何组织头文件结构。 - 解释了定义文件结构和头文件的作用,强调了良好的目录结构管理。 2. **程序板式规范**: - 规范了代码的空白行、行内空格、对齐、长行拆分等细节,以确保代码整洁易读。 - 提到注释的使用,尤其是在类的设计中。 3. **命名规则**: - 提供了通用的命名规则,以及针对Windows和UNIX应用的不同命名习惯。 - 关注于清晰、一致的命名风格,以便于理解和维护。 4. **表达式与基本语句**: - 讲解了运算符优先级、复合表达式、IF语句、循环结构(如FOR和SWITCH)以及对GOTO语句的使用。 - 强调了循环语句的效率优化和参数与循环控制变量的最佳实践。 5. **常量**: - 阐述了常量在程序中的作用,区分了CONST和#define的区别。 - 规定了常量定义的规则,并讨论了类中常量的处理。 6. **函数设计**: - 关注参数的规则、返回值处理、函数内部实现和一般建议。 - 引入了断言的使用,以及引用和指针之间的区别。 7. **内存管理**: - 描述了内存分配的不同方式,以及常见错误的预防措施。 - 比较了指针和数组,解释了指针参数传递内存的方式。 - 解释了FREE和DELETE的作用,以及动态内存的生命周期管理。 8. **其他高级特性**: - 包括类的构造函数、析构函数、赋值函数,以及类的继承和组合。 - 提及了编程实践中的一些实用经验和技巧。 通过阅读这份指南,读者将能够掌握高质量C++和C编程的关键要素,从而提高代码质量并避免潜在问题。无论是初学者还是经验丰富的开发者,这份指南都是一份宝贵的参考资源。

function [num,Period, Frequency, Density, CL95]=spectrum(x,mLAG) %%% function for power spectral analysis % usage: [num,Period, Frequency, density, cl95]=spectrum(x,mLAG) % Gong Daoyi 2003.12 xLEN=length(x); SER=x;N=xLEN;mLAGWK=mLAG;mLEN=N;J=mLAG;J1=J+1; %c calculating auto-connection coefficient A=0.0; C=0.; for I=1:N A=A+SER(I);end % I A=A/N; for I=1:N SER(I)=SER(I)-A; C=C+SER(I).^2; end % I C=C/N; for L=1:J CC(L)=0.0; for I=1:N-L CC(L)=CC(L)+SER(I)*SER(I+L); end %I CC(L)=CC(L)./(N-L); CC(L)=CC(L)/C; end %L C=1.0; %c estimating rude power spectra SPE(1)=0.0; for L=1:J-1 SPE(1)=SPE(1)+CC(L); end %L SPE(1)=SPE(1)./J+(C+CC(J))./(2*J); for L=1:J-1 % DO 210 L=1,J-1 SPE(L+1)=0.; for I=1:J-1 SPE(L+1)=SPE(L+1)+CC(I)*cos(pi*L*I/J); end % I SPE(L+1)=2*SPE(L+1)./J+C./J+(-1).^L*CC(J)./J; end % 210 L SPE(J1)=0.0; for I=1:J-1 SPE(J1)=SPE(J1)+(-1).^I*CC(J); end %I SPE(J1)=SPE(J1)/J+(C+(-1).^J*CC(J))/(2*J); %c smoothing power spectra PS(1)=.54*SPE(1)+.46*SPE(2); for L=2:J PS(L)=.23*SPE(L-1)+.54*SPE(L)+.23*SPE(L+1); end %L PS(J1)=.46*SPE(J)+.54*SPE(J1); %c statistical significence of PS W=0.0; for L=1:J-1 W=W+SPE(L+1); end %L W=W/J+(SPE(1)+SPE(J1))/(2*J); if (J > fix(N/2)) W=2.57*W; end if(J == fix(N/2)) W=2.49*W; end if(J < fix(N/2) & J > fix(N/3)) W=2.323*W; end if (J == fix(N/3)) W=2.157*W; end if (J < fix(N/3)) W=1.979*W; end %c the red noice examination for L=1:J1 SK(L)=W*(1-CC(1).^2)/(1+CC(1).^2-2*CC(1)*cos(3.14159*(L-1)/J)); end % L if (CC(1) > 0 & CC(1) >= CC(2) ) %c the white noice examination else for L=1:J1 SK(L)=W; end %L end % if %c calculating the length of cycle T(1)=NaN; for L=2:J1 T(L)=(2.0*J)/(L*1.0-1.0); end % L num=1:J+1;num=num(:)-1; Period=T(:); Frequency=1./T(:); Density=PS(:); CL95=SK(:);

2023-06-01 上传