AltiumDesigner、Cadence、PADS PCBLayout教程详解:提升电路设计技能

需积分: 44 237 下载量 192 浏览量 更新于2024-08-10 收藏 19.98MB PDF 举报
本资源是一份详尽的PCBLayout图文教程,由詹书庭于2011年12月16日发布,旨在帮助学习者掌握Altium Designer、Cadence和PADS这三个电子设计自动化软件。教程的目标是弥补之前视频教程的不足,提供一个条理清晰的学习路径,特别是对于初学者和正在从事PCB Layout工作的人员。 教程分为三个主要部分: 1. **简介**:首先介绍了教程的目的,强调了学习交流的重要性,并告知读者可能会存在的错误或不足之处,欢迎读者提出反馈。 2. **Altium Designer 09**: - **原理图库**:讲解如何创建和管理原理图库。 - **原理图设计**:详细指导原理图的绘制和设置。 - **PCB设计基础**:涵盖了规则设计、布局和布线的基础知识。 - **规则设计、布局和修改**:包括规则设置、PCB布局的具体步骤和后续操作。 3. **Cadence**: - **AD与Cadence转换**:涉及两个软件之间的转换方法。 - **原理图库和设计**:涵盖原理图库的创建、设置和元件操作,以及平坦式和分页式原理图的区别。 - **Pspice部分**:介绍PSPICE仿真基础、设置和高级功能,如AA简介。 - **封装库**:教授封装库的创建,包括0805、BGAs、自定义焊盘和通孔封装的制作。 - **PCB设计**:涉及PCB环境设置、前期工作,以及布局、规则设计的详细步骤。 教程每部分都设置了丰富的实践环节,通过实例和快捷键讲解,强调了技术交流的重要性,鼓励读者加入QQ群进行讨论。此外,作者还特别标注了部分内容来自网络,以尊重原创并标明来源。整个教程旨在系统地帮助学习者提升在PCB设计领域的技能,无论是在Altium Designer、Cadence还是PADS中。
2023-06-09 上传

# Look through unique values in each categorical column categorical_cols = train_df.select_dtypes(include="object").columns.tolist() for col in categorical_cols: print(f"{col}", f"Number of unique entries: {len(train_df[col].unique().tolist())},") print(train_df[col].unique().tolist()) def plot_bar_chart(df, columns, grid_rows, grid_cols, x_label='', y_label='', title='', whole_numbers_only=False, count_labels=True, as_percentage=True): num_plots = len(columns) grid_size = grid_rows * grid_cols num_rows = math.ceil(num_plots / grid_cols) if num_plots == 1: fig, axes = plt.subplots(1, 1, figsize=(12, 8)) axes = [axes] # Wrap the single axes in a list for consistent handling else: fig, axes = plt.subplots(num_rows, grid_cols, figsize=(12, 8)) axes = axes.ravel() # Flatten the axes array to iterate over it for i, column in enumerate(columns): df_column = df[column] if whole_numbers_only: df_column = df_column[df_column % 1 == 0] ax = axes[i] y = [num for (s, num) in df_column.value_counts().items()] x = [s for (s, num) in df_column.value_counts().items()] ax.bar(x, y, color='blue', alpha=0.5) try: ax.set_xticks(range(x[-1], x[0] + 1)) except: pass ax.set_xlabel(x_label) ax.set_ylabel(y_label) ax.set_title(title + ' - ' + column) if count_labels: df_col = df_column.value_counts(normalize=True).mul(100).round(1).astype(str) + '%' for idx, (year, value) in enumerate(df_column.value_counts().items()): if as_percentage == False: ax.annotate(f'{value}\n', xy=(year, value), ha='center', va='center') else: ax.annotate(f'{df_col[year]}\n', xy=(year, value), ha='center', va='center', size=8) if num_plots < grid_size: for j in range(num_plots, grid_size): fig.delaxes(axes[j]) # Remove empty subplots if present plt.tight_layout() plt.show()

2023-06-11 上传

#导入所需库 import numpy as np import pandas as pd from sklearn.preprocessing import LabelEncoder from keras.utils import to_categorical from keras.models import Sequential from keras.layers import Dense from sklearn.model_selection import KFold #读入数据 train_data = pd.read_csv('ProSeqs_Train.txt', delimiter=' ', header=None) test_data = pd.read_csv('ProSeqs_Test.txt', delimiter=' ', header=None) #预处理训练集数据 X = train_data.iloc[:, 2:].values y = train_data.iloc[:, 1].values le = LabelEncoder() y = le.fit_transform(y) y = to_categorical(y) #定义模型 model = Sequential() model.add(Dense(64, input_dim=X.shape[1], activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(2, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) #K折交叉验证训练模型 kf = KFold(n_splits=5, shuffle=True, random_state=42) fold_scores = [] for train_index, valid_index in kf.split(X): train_X, train_y = X[train_index], y[train_index] valid_X, valid_y = X[valid_index], y[valid_index] model.fit(train_X, train_y, validation_data=(valid_X, valid_y), epochs=50, batch_size=32, verbose=2) fold_scores.append(model.evaluate(valid_X, valid_y, verbose=0)[1]) print('KFold cross-validation accuracy: {:.2f}%'.format(np.mean(fold_scores) * 100)) #预处理测试集数据 test_X = test_data.iloc[:, 1:].values #预测测试集结果 preds = model.predict(test_X) preds = np.argmax(preds, axis=1) #保存预测结果至文件中 np.savetxt('preds.txt', preds, fmt='%d') #输出预测结果 print('Predictions:') print(preds)该蛋白质功能预测实验涉及分类模型的理论基础

2023-06-03 上传