我正在尝试为预先平滑的一些嘈杂曲线添加置信区间。我使用了this answer中提出的方法。就我而言,我是这样实现的:
tcd % Cell array contains all the original data for multiple files
tcd_smooth % Cell array contains the smoothed data for multiple files
% Store all time-value pairs smaller than the original data in
% lower_bound_times, lower_bound_values and all values larger than
% the original data in upper_bound_times, upper_bound_values
lower_bound_times = time{i_file}(tcd{i_file} < tcd_smooth{i_file});
upper_bound_times = time{i_file}(tcd{i_file} > tcd_smooth{i_file});
lower_bound_values = tcd{i_file}(tcd{i_file} < tcd_smooth{i_file});
upper_bound_values = tcd{i_file}(tcd{i_file} > tcd_smooth{i_file});
% Flip order of arrays to construct closed area that can be filled
X=[upper_bound_times; fliplr(lower_bound_times)];
Y=[upper_bound_values; fliplr(lower_bound_values)];
fill(X, Y , 1,...
'facecolor',colorOrder(mod(i_file-1,7)+1,:), ...
'edgecolor',colorOrder(mod(i_file-1,7)+1,:), ...
'facealpha', 0.2, ...
'edgealpha', 0.2);
该代码段对索引为i_files
的多个文件执行。置信水平很好地填充,如下面的单行放大图所示:
但是由于某些原因,所有行的末端都与开始处相连,如以下两个图所示:
情节的右端看起来像这样:
我无法解决如何摆脱这些返回的填充区域。
答案 0 :(得分:2)
在fliplr
中使用水平翻转;
和垂直连接与X=[upper_bound_times; fliplr(lower_bound_times)];
似乎是错误的
如果upper_bound_times是列向量,则应使用上下翻转代替左右翻转:
X=[upper_bound_times; flipud(lower_bound_times)]; %flip along first dimension
如果它是行向量,则应该对,
使用水平串联:
X=[upper_bound_times, fliplr(lower_bound_times)]; %horzcat