【发布时间】:2013-09-30 11:43:26
【问题描述】:
我有如下时间戳。
Time =
243.0000
243.0069
243.0139
243.0208
243.0278
243.0347
243.0417
243.0486
243.0556
243.0625
243.0694
243.0764
243.0833
243.0903
243.0972
243.1042
243.1111
243.1181
243.1250
243.1319
243.1389
243.1458
243.1528
243.1597
243.1667
243.1736
243.1806
243.1875
243.1944
现在我还有另外两列向量。
ab =
243.0300 0.5814
243.0717 0.6405
243.1134 0.6000
243.1550 0.5848
243.1967 0.5869
第一列是“Time2”,第二列是“Conc”。
Time2 = ab(:,1);
Conc = ab(:,2);
现在我想将基于“Time2”的“Conc”与“Time”匹配,但只填充“NaN”。 'Time2' 也不完全是 'Time'。我可以使用类似以下的东西
Conc_interpolated = interp1(Time2,Conc,Time)
但它使用人工数据进行插值。我只想通过在“Conc”中填充“NaN”而不是插值数据来匹配向量长度。有什么建议吗?谢谢
【问题讨论】:
-
我不太明白。如果您的意思是创建一个 NaN 数组,您可以通过以下方式生成 NaN 数组: nanarray = NaN(size(x)); x 这里是浓度
-
但是你的 Time 和 ab 根本不匹配??您能为这些示例输入提供示例输出吗?因为听起来你希望它有一个只有
NaNs 的列 -
@丹和科萨德斯;谢谢你。实际上你是对的,输出将是'NaN',因为'Time'和'Time2'不匹配。但我可以将那个时间用于“Conc_interpolated”,其中“Time”和“Time2”彼此最接近。例如上面'ab'的第一行。 'Time2' 是 243.0300,'Conc' 是 '0.5814'。仅考虑到这一点,现在在针对“时间”的新向量中,“浓度”0.5814 的值可以在“时间”中的 243.0278 处使用(因为此时“时间”和“时间 2”彼此接近),其余的数据是“NaN”。
-
因此,您希望将每个“Conc”值分配给最接近相应“Time2”值的“Time”值,对吗?并且要填写,您希望将 NaN 分配给所有其他不匹配的“时间”值吗?
-
@A. Donda,是的,谢谢
标签: matlab interpolation data-analysis