我收集了两种类型的数据。一个是结构Outputs
,包含3个字段:Outputs.time
,Outputs.signals
和一个不重要的字段。 Outputs.time
是一个包含所有时间值(数据采样的地方)的列向量,Outputs.signals
有15行,每行有一个信号的值和属性(所以总共有15个信号)。因此,Outputs.signals(i).values
与Outputs.time
具有相同的行数。
现在我有另外一个包含4列的表:LabData.time
,LabData.NdBoiler
,LabData.NdOutput
和一个不重要的列。 Outputs.time
包含所有计算机采样数据,LabData.time
仅包含一些手动测量值。因此,Outputs.time
大于LabData.time
,但在某些时候(Outputs.time
= LabData.time
),Outputs.signals
和其他列的值都有LabData
。
目标是将LabData.NdBoiler
和LabData.NdOutput
的值放在Outputs.signals(16)
和Outputs.signals(17)
中,以获取值已知的时间样本。对于其他值,Outputs.signals(16) = NaN
和Outputs.signals(17) = NaN
。但我不知道该怎么做,你能帮助我吗?
示例:
Outputs.time = [1; 2; 3; 4; 5];
Outputs.signals(1).values = [1111; 2222; 3333; 4444; 5555]; %and so on for the other signals
LabData.time = [2; 4];
LabData.NdBoiler = [1.23; 1.32];
%% Now the final result should be
Outputs.signals(16).values = [NaN; 1.23; NaN; 1.32; NaN]
答案 0 :(得分:1)
我们的想法是先创建NaN
s的向量,然后使用ismember
匹配时间点,以替换您所知道的值。
Outputs.signals(16).values = nan(1,length(Outputs.time)); %Vector of nans
Lia = ismember(Outputs.time,LabData.time); %Where does the times match?
Outputs.signals(16).values(Lia) = LabData.NdBoiler; %substitute