首先,我们生成一些样本输入数据。请注意,这些数据的数据结构使我们可以遍历传感器,而不必为四个传感器中的每一个编写单独的代码。
% sample input data
sensors = struct;
sensors.d = { ...
1:1:5; % d1
2:2:6; % d2
3:2:7; % d3
2:1:4; % d4
};
sensors.t = { ...
1:2:7; % t1
2:3:5; % t2
1:4:9; % t3
3:1:5; % t4
};
sensors.cs = { ...
1 * ones(length(sensors.d{1}),length(sensors.t{1})); % cs1
2 * ones(length(sensors.d{2}),length(sensors.t{2})); % cs2
3 * ones(length(sensors.d{3}),length(sensors.t{3})); % cs1
4 * ones(length(sensors.d{4}),length(sensors.t{4})); % cs2
};
然后,我们将传感器数据合并为一个矩阵。从您的示例中尚不清楚您要如何合并数据,因此我们假设您希望合并后的矩阵以全零开始,然后逐个元素地添加每个传感器的数据。
% COMBINE SENSOR DATA INTO SINGLE MATRIX
% dimensions
d = unique(cat(2,sensors.d{:}));
t = unique(cat(2,sensors.t{:}));
% initialize matrix
cs = zeros(length(d),length(t));
% loop over sensors
for s = 1 : length(sensors.cs)
% indexes of sensor's d and t dimensions in combined d and t dimensions
[~,Id] = ismember(sensors.d{s},d);
[~,It] = ismember(sensors.t{s},t);
% add the values to the combined matrix
cs(Id,It) = cs(Id,It) + sensors.cs{s};
end
例如,如果您想从全NaN矩阵开始,并让每个元素代表添加了数据的最后一个传感器,则可以将cs = zeros(length(d),length(t));
行替换为cs = NaN(length(d),length(t));
,然后将行cs(Id,It) + sensors.cs{s};
和cs(Id,It) = sensors.cs{s};
。
本文链接:https://www.f2er.com/3018250.html