Как можно удалить некоторые элементы в матричном представлении, которые удовлетворяют функции отсечения, в MATLAB? - PullRequest
0 голосов
/ 06 июня 2011
X=(-5:.5:5)
Z=(-3:.5:3)
[x z]=meshgrid(X,Z)

Функция отсечения, которая должна удалять нужные элементы, представляет собой круг с радиусом 1 (Х-1) ^ 2 + (г-1) ^ 2 <= 1 Как мы можем управлять циклом, чтобы поместить эти элементы в выходные данные? </p>

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Сначала я предположу, что x и z представляют координаты, по которым будет оцениваться некоторая двумерная функция f для генерации вашего вывода. Учитывая, что в вашем примере x и z в конечном итоге будут матрицами 13 на 21, ваш вывод из f также должен быть 13 на 21. Затем вы можете найти логический индекс , указывающий точки, которые находятся внутри вашего круга, и использовать этот индекс, чтобы установить точки в выходной матрице равными нулю:

output = f(x,z);  %# Compute your output, which should be a 13-by-21 matrix
index = (x-1).^2 + (z-1).^2 <= 1;  %# Logical index of elements inside the circle
output(index) = 0;  %# Set the output values inside the circle to 0
0 голосов
/ 07 июня 2011

Я думаю, что вы ищете это:

for i=1:size(x,1)
   for j=1:size(x,2)
      if ((x(i,j)-1)^2+(z(i,j)-1)^2<=1)
          x(i,j) = 0;
          y(i,j) = 0;
      end
   end
end

Я надеюсь, что этот код достаточно прост для вас, чтобы понять, что он делает - если нет, то вы должны где-нибудь взять класс программирования или сесть скнигу.

Теперь, если приведенный выше ответ - то, что вы искали, поверьте мне на слово, что ответ gnovice (смесь edit 2 и edit 3 На самом деле) показал, как сделать это намного умнее в MATLAB:

radius = 1;
index = (x-1).^2 + (z-1).^2 <= radius^2;  %# Logical index of elements inside the circle
x(index) = 0;  %# Set the x values inside the circle to 0
z(index) = 0;  %# Set the z values inside the circle to 0

Надеюсь, это поможет - иначе я сдаюсь; -).

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