Другое решение заключается в том, чтобы поместить несколько расстояний в одну матрицу:
Пример:
Towns = {'Town1', 'Town2', 'Town3', 'Town4'};
distances = [0 200 13.7 8.7;
200 0 13.3 9.3;
13.7 13.3 0 255;
8.7 9.3 255 0];
EVs = {'Nissan Leaf 24 kWh pack', 'Nissan Leaf 30 kWh pack'};
ranges = [199 250];
И тогда я могу рассчитать расстояния как трехмерную матрицу:
remainingrange = permute(ranges, [1 3 2]) - distances;
remainingrange = bsxfun(@minus, permute(ranges, [1 3 2]), distances);
Если я хочу проверить, не хватает ли EV в KM, я мог бы написать:
tooFarForMyEV = find(remainingrange < 0)
[from, to, ev] = ind2sub(size(remainingrange), tooFarForMyEV);
lackingrange = table(Towns(from)', Towns(to)', EVs(ev)', remainingrange(tooFarForMyEV), 'VariableNames', {'From', 'To', 'EV', 'Deficit'})