R语言入门指南

需积分: 12 1 下载量 201 浏览量 更新于2024-07-26 收藏 720KB PDF 举报
"R4beg_cn是中国版的《R for Beginners》中文手册,由Emmanuel Paradis原著,并由四位志愿者翻译,华东师范大学汤银才老师编辑校订,北京大学李东风老师审阅。该手册旨在帮助R语言初学者入门,内容涵盖R的基础原理、对象操作和数据处理等。" 在R语言的学习中,了解基础原理至关重要。R是一种开源统计计算和图形环境,它提供了丰富的数据分析工具。"基本原理"章节会介绍R的基本语法、数据类型以及如何交互式地使用R。例如,学习如何创建和运行简单的R命令,理解变量的赋值,以及掌握不同数据类型,如数值、字符和逻辑型。 "对象的产生,排列及删除"部分,初学者将学会如何在R中创建、修改和管理对象。对象是R中的基本单元,可以是数据、函数或其他复杂结构。了解如何命名、存储和删除这些对象对于有效使用R进行数据分析至关重要。此外,还会涉及到向量、矩阵、列表和数据框等复合数据结构的创建和操作。 在线帮助是R的一大优点,"在线帮助"章节会教导用户如何利用R的内置文档系统来查找和理解函数的用法。这包括使用`?`符号查询函数帮助,以及使用`help()`函数获取更详细的信息。熟练使用在线帮助可以大大提升学习和工作效率。 "R的数据操作"是数据分析的核心。这部分会讲解如何读取和写入数据文件,如CSV或Excel格式,以及如何在R环境中进行数据清洗、转换和预处理。此外,还将涉及子集选取、数据合并和排序等操作,这些都是在实际分析中不可或缺的技能。 这个中文手册不仅提供了对R基础知识的详细介绍,还包含了实用的示例和练习,有助于读者快速上手并掌握R语言的基本应用。通过学习,初学者可以逐步建立起对R语言的理解,为进一步深入学习统计分析和数据科学打下坚实基础。

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; } 代码解读

155 浏览量

function [pesq_mos, pesq_seg] = pesq(ref, deg, fs) % Check inputs if nargin < 3 fs = 16000; end if nargin < 2 error('Not enough input arguments'); end if length(ref) ~= length(deg) error('Input signals must be of equal length'); end % Load filter coefficients load('pesq_filter.mat'); % High-pass filter deg_hp = filter(b_hp, a_hp, deg); % Remove silence [r_beg, r_end] = find_voiced(ref, fs); [d_beg, d_end] = find_voiced(deg_hp, fs); r_sig = ref(r_beg:r_end); d_sig = deg_hp(d_beg:d_end); % Find maximum length sig_len = min(length(r_sig), length(d_sig)); % Filter signals r_sig = filter(b_lpf, a_lpf, r_sig(1:sig_len)); d_sig = filter(b_lpf, a_lpf, d_sig(1:sig_len)); % Resample signals r_sig = resample(r_sig, 8000, fs); d_sig = resample(d_sig, 8000, fs); % Calculate PESQ [pesq_mos, pesq_seg] = pesq_mex(r_sig, d_sig); end function [beg, endd] = find_voiced(sig, fs) % Set parameters win_len = 240; win_shift = 80; sil_thresh = 30; min_voiced = 0.1; % Calculate energy sig_pow = sig.^2; sig_pow_filt = filter(ones(1, win_len)/win_len, 1, sig_pow); % Normalize sig_pow_filt = sig_pow_filt/max(sig_pow_filt); % Find voiced segments beg = []; endd = []; num_voiced = 0; for n = 1:win_shift:length(sig)-win_len if sig_pow_filt(n+win_len/2) > min_voiced && ... mean(sig_pow_filt(n:n+win_len-1)) > sil_thresh if isempty(beg) beg = n; end else if ~isempty(beg) endd = [endd n-1]; num_voiced = num_voiced + 1; beg = []; end end end if ~isempty(beg) endd = [endd length(sig)]; num_voiced = num_voiced + 1; end % Remove segments that are too short min_len = fs*0.05; len_voiced = endd-beg+1; too_short = len_voiced < min_len; beg(too_short) = []; endd(too_short) = []; end这段代码中的pesq_mex.mex64文件怎么编译

197 浏览量