set xDamp 0.05; set nEigenI 1; set nEigenJ 2; set lambdaN [eigen [expr $nEigenJ]]; set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; set omegaI [expr pow($lambdaI,0.5)]; set omegaJ [expr pow($lambdaJ,0.5)]; set alphaM [expr $xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; set betaKcurr [expr 2.*$xDamp/($omegaI+$omegaJ)]; rayleigh $alphaM $betaKcurr 0 0 puts $alphaM puts $betaKcurr set iGMfile "DM1X.txt"; set iGMfact "1"; set dt 0.02; set dispSeries1 "Series -dt $dt -filePath $iGMfile -factor $iGMfact"; set iGMfile "DM1X.txt"; set iGMfact "1"; set dt 0.02; set dispSeries2 "Series -dt $dt -filePath $iGMfile -factor $iGMfact"; pattern MultiSupport 1 { groundMotion 1 Plain -disp $dispSeries1 imposedMotion 1 1 1 imposedMotion 3 1 1 } pattern MultiSupport 2 { groundMotion 2 Plain -disp $dispSeries2 imposedMotion 2 1 2 imposedMotion 4 1 2 } constraints Transformation; numberer Plain; system SparseSPD; test EnergyIncr 1.0e-4 200; algorithm Newton integrator Newmark 0.5 0.25 analysis Transient analyze 1000 0.02
时间: 2024-03-29 07:37:34 浏览: 120
这是一段Tcl语言的脚本,用于进行地震工程领域的结构动力学分析。这段脚本中包含了一些参数的设定,如阻尼比、振型数、特征值、角频率等;还包括了地震波数据的导入、多支座约束模式的定义、结构约束的设置等内容。最后使用Newton算法和Newmark积分器进行分析,得到1000个时间步的响应结果。这段脚本是一个完整的分析流程,但具体的分析对象和参数需要根据实际情况进行调整。
相关问题
void Trajectory::predict_box( uint idx_duration, std::vector<Box>& vec_box, std::vector<Eigen::MatrixXf, Eigen::aligned_allocatorEigen::MatrixXf>& vec_cova, bool& is_replay_frame) { vec_box.clear(); vec_cova.clear(); if (is_replay_frame) { for (auto iter = map_current_box_.begin(); iter != map_current_box_.end(); ++iter) { Destroy(iter->second.track_id()); } m_track_start_.Clear_All(); NU = 0; is_replay_frame = false; } Eigen::MatrixXf F_temp = F_; F_temp(0, 1) = idx_duration * F_(0, 1); F_temp(2, 3) = idx_duration * F_(2, 3); F_temp(4, 5) = idx_duration * F_(4, 5); uint64_t track_id; Eigen::Matrix<float, 6, 1> state_lidar; Eigen::Matrix<float, 6, 6> P_kkminus1; Eigen::Matrix3f S_temp; for (auto beg = map_current_box_.begin(); beg != map_current_box_.end(); ++beg) { float t = (fabs(0.1 - beg->second.frame_duration()) > 0.05) ? 0.1 : 0.2 - beg->second.frame_duration(); F_temp(0, 1) = t; F_temp(2, 3) = t; F_temp(4, 5) = t; // uint64_t timestamp_new = beg->second.timestamp() + uint(10.0 * t * NANO_FRAME); track_id = beg->first; state_lidar = F_temp * map_lidar_state_.at(track_id); P_kkminus1 = F_temp * map_lidar_cova_.at(track_id) * F_temp.transpose() + Q_lidar_; S_temp = H_ * P_kkminus1 * H_.transpose() + R_lidar_; float psi_new = (1 - P_D_ * P_G_) * beg->second.psi() / (1 - P_D_ * P_G_ * beg->second.psi()); Box bbox = beg->second; bbox.set_psi(psi_new); // bbox.set_timestamp(timestamp_new); bbox.set_position_x(state_lidar(0)); bbox.set_position_y(state_lidar(2)); bbox.set_position_z(state_lidar(4)); bbox.set_speed_x(state_lidar(1)); bbox.set_speed_y(state_lidar(3)); bbox.set_speed_z(state_lidar(5)); vec_box.emplace_back(bbox); vec_cova.emplace_back(S_temp); } AINFO << "Finish predict with duration frame num: " << idx_duration; } 代码解读
这段代码是一个名为Trajectory的类中的predict_box函数。函数接受一个时间段的索引(idx_duration),一个存储Box对象的向量(vec_box),一个存储Eigen矩阵的向量(vec_cova),以及一个布尔变量(is_replay_frame)作为参数。
首先,函数清空vec_box和vec_cova两个向量。
然后,如果is_replay_frame为true,则遍历map_current_box_中的元素,并销毁每个元素的track_id。然后清空m_track_start_和NU,并将is_replay_frame设置为false。
接下来,创建一个临时的F_temp矩阵,并将其与原始的F_矩阵进行乘法操作,并将其中的某些元素乘以idx_duration。这是为了根据时间段来预测box的状态。
然后,遍历map_current_box_中的元素。对于每个元素,计算一个临时变量t,并根据t更新F_temp矩阵。然后使用F_temp和map_lidar_state_中相应的track_id来计算state_lidar矩阵。接着,使用F_temp、map_lidar_cova_中相应的track_id和Q_lidar_来计算P_kkminus1矩阵。再使用H_、P_kkminus1和R_lidar_来计算S_temp矩阵。
之后,根据一些计算得到的值,更新beg->second中的一些属性,并将其加入vec_box中。同时,将S_temp加入vec_cova中。
最后,输出一条日志信息,表示完成了使用给定时间段进行预测。
请注意,这只是对代码进行的初步解读,具体实现可能还涉及其他变量和函数。
import cv2 import numpy as np import matplotlib.pyplot as plt image_path = './Lenna.jpg' image = cv2.imread(image_path) num_row, num_col, num_ch = image.shape # image channels are in BGR B = image[:, :, 0] G = image[:, :, 1] R = image[:, :, 2] # Display the point cloud of the pixels in the coordinate system with RGB as the axis # Construct X # CODE HERE # Decomment the following lines # fig = plt.figure('point cloud of the pixels in the RGB coordinate system', figsize=(5.5, 4.5)) # ax = fig.add_subplot(111, projection='3d') # ax.plot3D(X[0, :], X[1, :], X[2, :], '.') # ax.set_xlabel('R') # ax.set_ylabel('G') # ax.set_zlabel('B') # ax.axis('equal') # plt.show() # Decentralization # CODE HERE # Diagonalization # CODE HERE # Sort the eigen values with the eigen vectors # CODE HERE # Construct the projection to the new basis with the eigen vectors and perform the projection # CODE HERE # Display the color image with the 3 principle conponents in 2 lines and 2 columns # Decommen
t the following lines
```
# fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
# for i, ax in enumerate(axs.flat):
# ax.imshow(X_reconstructed[:, :, i])
# ax.set_title('PC ' + str(i+1))
# ax.axis('off')
# plt.show()
```
阅读全文