part-20 建立时间Setting Time

本文详细探讨了运算放大器的建立时间概念及其重要性。解释了建立时间如何影响ADC采样的准确性,并分析了运放建立时间的两个主要组成部分:非线性过程和准线性区。此外,还讨论了压摆率和闭环增益对建立时间的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注运放建立时间的人并不多,到建立时间对于其后的ADC至关重要。

比如一个16位的ADC,最低位LSB对应的电压范围是满量程的15ppm(百万分之十五)。如果驱动ADC的运放还没有达到最终的值就被采样了就必然会引起误差。

放大器的建立时间是当运放的输入为阶跃信号时,运放的输出响应进入并保持在规定的误差范围内所需的时间。这个误差范围常见的有0.1%,0.05%,0.01%,悲剧的是误差大小和建立时间不是线性关系。下图是建立时间示例说明图,建立时间就是从阶跃信号开始到信号误差达到目标值的时间。

从图上可以看出,运放阶跃信号信号的响应是一个含有过冲和振铃现象的二阶响应。这个响应很像控制系统的二阶响应,所以一下分析其余控制系统的相似性。

运放的建立时间主要有两段组成,第一段是运放的输出电压从初始值到达目标值附近,这是一个非线性过程,这段时长由给运放的补偿电容充电的电流决定,关于这个补偿电压在压摆率里提到过,所以也可以理解这个时间和压摆率有关(压摆率的决定因素也是补偿电容充电的快慢);第二段是指输出已经接近最终目标值了,进入这一阶段,运放处于准线性区。这一阶段的特性主要受到运放的

零-极点(doublets)影响。在高速运放中,运放的压摆率slewRate很高,因此第一段时间非常短,建立时间主要有第二阶段决定。

关于第二阶段时间,感兴趣可以参考B.Yeshwant Kamath的经典论文《Relationship Between Frequency Response and etting Time of Operational Amplifier》。

关于建立时间的测量方法,需要比较精密的电路和参数良好的仪器。有兴趣可以参考Measuring op amp setting time by using sample-and-hold technique

从运放的指标来说,运放的建立时间会受到大信号参数压摆率和小信号闭环增益的影响。下图是运放建立时间和闭环增益的关系。

通过图表可以看出,随着闭环增益的增加,建立时间也随着增加。这是由于高增益时,运放的闭环带宽会降低,因此调整输出误差的环路增益AolB也会减小,最终造成建立时间增加。

 

最后再说一句,对于数据采样保持电路来说,建立时间很重要。特别是对于需要用multiplexer多路开关在不同信号之间切换时,一定要注意等信号建立之后再采样,否则会引起不可预知的误差。

### 实现栅格长时间序列偏相关性分析 对于栅格数据的时间序列偏相关性分析,在 Python 中可以利用 `rasterio` 和 `numpy` 库来处理栅格数据,并借助 `pandas` 或者专门用于统计的库如 `statsmodels` 来执行偏相关分析。下面提供一段基于这些工具实现栅格时间序列偏相关性的代码示例。 #### 准备工作环境 首先安装必要的包: ```bash pip install rasterio numpy pandas statsmodels scipy ``` #### 加载并预处理栅格数据 读取多个时间段内的栅格文件,假设每个栅格代表不同日期下的同一地理区域观测值(例如温度、降水等),并将它们转换成适合做统计分析的形式。 ```python import os import rasterio import numpy as np from glob import glob def load_rasters(directory, pattern="*.tif"): """ Load rasters from a directory matching the given file name pattern. Args: directory (str): Path to folder containing tif files. pattern (str): File extension or naming convention of target files. Returns: tuple: A list of arrays and their associated dates. """ paths = sorted(glob(os.path.join(directory, pattern))) data_series = [] dates = [] for path in paths: with rasterio.open(path) as src: array = src.read(1).astype(float) date_str = os.path.basename(path).split('.')[0][-8:] # Extract YYYYMMDD part dates.append(date_str) # Handle NoData values by setting them to NaNs mask = src.dataset_mask() masked_array = np.where(mask == 0, np.nan, array) data_series.append(masked_array.flatten()) return np.array(data_series), dates ``` 此函数会返回两个列表:一个是所有栅格图像展平后的数组组成的二维 NumPy 数组;另一个则是对应的日期字符串列表[^1]。 #### 执行偏相关分析 接下来定义一个函数来进行偏相关系数计算,这里采用的是通过回归去除其他因素影响后再求残差之间的简单线性关系的方法。 ```python import pandas as pd from statsmodels.stats.outliers_influence import variance_inflation_factor from itertools import combinations_with_replacement def partial_corr(df, control_vars=None): """Compute pairwise partial correlation coefficients between columns.""" df_ = df.dropna().copy() if not isinstance(control_vars, type(None)): X = df_[control_vars].values y_cols = [col for col in df_.columns if col not in control_vars] residuals = {} for var in y_cols: model = smf.ols(f'{var} ~ {"+".join(control_vars)}', data=df_) res = model.fit() residuals[var] = res.resid residual_df = pd.DataFrame(residuals) corr_matrix = residual_df.corr(method='pearson') else: corr_matrix = df_.corr(method='pearson') return corr_matrix ``` 这段代码接受一个 DataFrame 输入以及可选参数 `control_vars` 表明哪些变量作为控制变量参与调整。如果提供了控制变量,则先建立多元线性模型估计各个目标变量关于控制变量的影响程度,再用剩余部分重新评估两者的关联强度[^2]。 #### 整合流程与应用实例 最后一步是将上述功能组合起来应用于实际案例中。考虑到栅格数据的特点,可能还需要额外考虑如何有效地存储中间结果以便后续可视化或其他进一步操作。 ```python import matplotlib.pyplot as plt import seaborn as sns # Example usage data_dir = './path/to/raster/files' target_variable = 'temperature' # Replace this according to your dataset control_variables = ['precipitation', 'humidity'] # Variables you want to adjust for arrays, _dates = load_rasters(data_dir) df = pd.DataFrame(arrays.T, columns=_dates) # Assuming that each column corresponds to one variable over time at all pixels, # reshape it into long format where rows represent individual pixel-time observations. long_data = df.stack().reset_index(level=1) long_data.columns = ['date', f'value_{target_variable}'] for ctrl_var in control_variables: other_arrays, __ = load_rasters(data_dir.replace(target_variable, ctrl_var)) temp_df = pd.DataFrame(other_arrays.T, columns=__dates) stacked_other = temp_df.stack().reset_index(level=1) stacked_other.columns = ['date', f'value_{ctrl_var}'] long_data = pd.merge(long_data, stacked_other, on=['date']) pcorr_result = partial_corr(long_data.set_index('date'), control_vars=control_variables) plt.figure(figsize=(10, 6)) sns.heatmap(pcorr_result.abs(), annot=True, cmap="coolwarm", center=0.) plt.title("Partial Correlation Heatmap Between Target Variable And Others After Adjusting For Control Factors") plt.show() ``` 以上就是针对栅格数据集实施时间序列偏相关性分析的一种方法论框架及其具体编码实践[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值