我有一个“样本”类,其中包含数据。我想将此数据左,右和居中填充。我没有发布Sample的代码,因为我很确定,这不是问题所在。 (如果需要的话,我会的。)以下代码显示了我的操作方法。
val hline_magf = SampleUtils.getDataFromOneFile("C:\\Users\\XXXX\\Desktop\\test\\hline.421.magf.csv")
val adj_ts = Preprocess.adjustTimestamps(hline_magf)
val abs = Preprocess.abs(adj_ts)
var lerp = Preprocess.lerp(abs)
val lh = Preprocess.hanning_window(lerp)
val lhl = Preprocess.pad_left(lh) // these cause the problems somewhere
val lhr = Preprocess.pad_right(lh)
val lhm = Preprocess.pad_center(lh)
第一步是对数据进行整形,并使其正常工作。 (所有预处理功能都接受Sample对象,并返回Sample对象。)但是,一旦我使用了其中一种pad功能,其他pad功能就不再起作用。
如果我在第一个小时左移,lhm也会向左填充,如果我首先右移,其他的也会向右填充。
垫板功能一开始就按预期工作,我测试了这三种变化。
这是函数的外观:
fun pad_left(sample: Sample): Sample {
var ret_val = sample
println("#### pad left")
while (ret_val.timestamp.size < MAX_LEN) ret_val.timestamp = doubleArrayOf(0.0) + ret_val.timestamp
while (ret_val.absoluteSquare_float.size < MAX_LEN) ret_val.absoluteSquare_float = floatArrayOf(0.0f) + ret_val.absoluteSquare_float
while (ret_val.x_float.size < MAX_LEN) ret_val.x_float = floatArrayOf(0.0f) + ret_val.x_float
while (ret_val.y_float.size < MAX_LEN) ret_val.y_float = floatArrayOf(0.0f) + ret_val.y_float
while (ret_val.z_float.size < MAX_LEN) ret_val.z_float = floatArrayOf(0.0f) + ret_val.z_float
return ret_val
}
编辑: 感谢yole。我已经在类中添加了copy()方法,该方法将返回一个新对象。