MATLAB: создание трехмерного массива, векторизация против петли - PullRequest
3 голосов
/ 01 ноября 2011

Я искал ответ на свой вопрос здесь, но не могу его найти, поэтому заранее прошу прощения, если он уже существует!

Я пытаюсь создать трехмерный массив трехмерных точек в пространстве (x, y, z). Я знаю, что в одномерном векторе вы можете указать интервал, например, 1: 5: 20, чтобы получить вектор от 1 до 20 с интервалом 5. Что я хотел бы сделать, это создать трехмерный массив, наиболее вероятно, что строка за строкой будет наиболее эффективный, где интервал равен единичному вектору (ix, iy, iz). так, например,

    a(1,1,:) = [1, 1, 1]
    uv = [0.5 0.5 0.5]
    a(2,2,:) = [1.5, 1.5, 1.5]

и т.д.. Я знаю, что числа не являются «единичными векторами», но идея есть. Есть ли что-то вроде a = [1, 1, 1] : uv : [end, end, end] ???

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Вас может заинтересовать сетка .

3 голосов
/ 01 ноября 2011

Пример:

[X,Y,Z] = meshgrid(1:0.1:2, 1:0.1:2, 1:0.1:2);    %# they can be different
points = [X(:) Y(:) Z(:)];

plot3(points(:,1),points(:,2),points(:,3),'.')
box on, axis equal
xlabel x, ylabel y, zlabel z

screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...