函数或变量 'xArr' 无法识别。 出错 nihe (第 190 行) searchHistory = [xArr; yArr];修改这个代码

动态 未结 0 82
小小草
小小草 LV1 2023年9月23日 23:40 发表
非常抱歉,这是因为在之前的代码中没有定义变量xArr和yArr。如果您想要绘制历史搜索图,需要先将搜索过程中每个时间步的状态值存储到xArr和yArr数组中,然后再使用这两个数组来绘制历史搜索图。 例如,可以在粒子滤波器递推更新的部分添加以下代码来记录每个时间步的状态值: ```matlab % 递推更新 pred = zeros(length(APD), 1); xArr = zeros(length(APD), 1); yArr = zeros(length(APD), 1); for i = 1:length(APD) % 预测每个粒子的下一个状态 for j = 1:N_particles if i > length(fittedmodel) || isempty(fittedmodel{i}) % 无拟合模型 particles(j) = particles(j) + randn * sigma_process; else % 有拟合模型 particles(j) = feval(fittedmodel{i}, time(i)) + randn * sigma_process; end end % 计算粒子的权重 for j = 1:N_particles diff = particles(j) - APD(i); weights(j) = exp(-diff^2 / (2*sigma_observe^2)); end % 将所有非正数的权重设为最小值 min_weight = min(weights(weights > 0)); if isempty(min_weight) min_weight = 1e-6; % 避免除以 0 的情况 end min_weights = min_weight * ones(N_particles, 1); idx_zeros =find(weights <= 0); weights(idx_zeros) = min_weights(idx_zeros); % 归一化权重 weights = weights / sum(weights); % 计算预测值 pred(i) = sum(particles .* weights); % 记录状态值 xArr(i) = truedistance(i); yArr(i) = pred(i); % 重采样
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复