我有一台机器的3次测量。每次测量都会在其值变化一定的增量时触发。
我有这3个数据集,表示为Matlab对象:T1
,T2
和O
。它们中的每一个都包含obj.t
,其中包含时间戳值,obj.y
包含测量值。
我会长时间衡量T1
和T2
,但O
仅会在短时间内衡量。任务是使用O_future
的现有值进行培训和验证,从T1
和T2
重建O
。
请注意T1.t
,T2.t
和O.t
不相等,甚至不是它们的频率(我可以称之为“变量采样率”,但不确定是否这个名称适用)。
是否可以使用Matlab或其他软件解决此问题?我是否需要将所有数据重新采样为公共时间向量?
答案 0 :(得分:1)
关于共同时间。下面是一些基本代码。 (我想你可能知道怎么做,但以防万一)。但是,第二种选择可能会让你更进一步......
select distinct m.title , movieid
from
movies m
inner join
ratings r using (movieid)
inner join
genres g using (movieid)
where r.votes > 0 and g.genre = '$_SESSION[genero]'
对于大型矢量而言,如果您在其中一个信号中具有较小的采样频率(这将决定最低分辨率),这可能会变得无效。
另一种选择是定义较粗略的时间向量,并查看在某个时期内发生的事件数量,这些事件可能具有一定的预测能力(不确定您的设置)。 结构类似于
% creating test signals
t1 = 1:2:100;
t2 = 1:3:200;
to = [5 6 100 140];
s1 = round (unifrnd(0,1,size(t1)));
s2 = round (unifrnd(0,1,size(t2)));
o = ones(size(to));
maxt = max([t1 t2 to]);
mint = min([t1 t2 to]);
% determining minimum frequency
frequ = min([t1(2:length(t1)) - t1(1:length(t1)-1) t2(2:length(t2)) - t2(1:length(t2)-1) to(2:length(to)) - to(1:length(to)-1)] );
% create a time vector with highest resolution
tinterp = linspace(mint,maxt,(maxt-mint)/frequ+1);
s1_interp = zeros(size(tinterp));
s2_interp = zeros(size(tinterp));
o_interp = zeros(size(tinterp));
for i = 1: length(t1)
s1_interp(ceil(t1(i))==floor(tinterp)) =s1(i);
end
for i = 1: length(t2)
s2_interp(ceil(t2(i))==floor(tinterp)) =s2(i);
end
for i = 1: length(to)
o_interp(ceil(to(i))==floor(tinterp)) = o(i);
end
figure,
subplot 311
hold on, plot(t1,s1,'ro'), plot(tinterp,s1_interp,'k-')
legend('observation','interpolation')
title ('signal 1')
subplot 312
hold on, plot(t2,s2,'ro'), plot(tinterp,s2_interp,'k-')
legend('observation','interpolation')
title ('signal 2')
subplot 313
hold on, plot(to,o,'ro'), plot(tinterp,o_interp,'k-')
legend('observation','interpolation')
title ('O')