Я хотел бы построить единую сетку высоты в Matlab, у меня есть способ сделать это, но это слишком медленно. В настоящее время у меня есть данные таблицы высоты, которые я конвертирую в x, y, z. Затем я запускаю следующий код:Построение сетки высоты в Matlab
figure;
hold on;
axis equal;
minHeight = min(z)
maxHeight = max(z)
gX = HG.xCellSize/2;
gY = HG.yCellSize/2;
for i = 1:length(x)
colour = getColour(minHeight, maxHeight, z(i));
p1X = [x(i)-gX, x(i)+gX, x(i)+gX, x(i)-gX];
p1Y = [y(i)+gY, y(i)+gY, y(i)-gY, y(i)-gY];
p1Z = [z(i), z(i), z(i), z(i)];
p1C = [colour, colour, colour, colour];
fill3(p1X, p1Y, p1Z, p1C)
end
В случае, если вы desperatley нужно знать, получить цвет делает это:
function [colour] = getColour(min, max, height)
colour = floor((max-height)/(max-min)+1);
end
Теперь это работает и производит в основном то, что я хочу:
К сожалению, это так медленно. И действительно, чего я могу ожидать, я перебираю сетку высоты и рисую фигуры на экране 1 к 1. К сожалению, я не могу думать ни о чем, что даст тот же результат и будет быстрым в Matlab. Я надеюсь, что у маллаб-гуру может быть лучшая идея.
Действительно ли вам нужны квадратные маркеры, отображаемые правильно в 3d пространстве? Что относительно 'scatter3 (x, y, z, HG.xCellSize, z)'? Вы также можете выбрать маркер, но маркер всегда будет ориентироваться в направлении плоскости обзора, а не вдоль оси z. – Peter
@Peter спасибо, но да, мне нужны квадраты, вот как наилучшим образом представлены сетки высоты. –