Проверить матричный элемент - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужен (rho,theta) meshgrid, и для этого сначала я определил meshgrid в декартовых координатах, а затем преобразовал его в полярные координаты:

[X,Y] = meshgrid(x,y);
R = sqrt(X.^2+Y.^2);
PHI = atan2(Y,X);

Теперь я получаю сетку в полярных координатах, но так как это квадратная сетка, я получаю эту вещь

enter image description here

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

for i = 1:1:length(R)
    for j = 1:1:length(R)
        if R(i,j) > a
            R(i,j) = 0;
        else
            R(i,j);
        end
    end
end

Как я могу сделать это менее запутанным?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Если мы говорим, что a - это предел, который вы хотите использовать, вы можете использовать приведенный ниже код вместо цикла for:

R = (R<=a).*R

Или вы также можете использовать:

R(R>a) = 0
0 голосов
/ 20 ноября 2018

Для прямого преобразования декартовых в полярные координаты: используйте cart2pol.

[theta,rho] = cart2pol(x,y)

Затем выполняется простая логическая проверка:

tmp = rho>R;
rho(tmp)=0; %=[] to delete completely
theta(tmp)=0;

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

[theta,rho] = meshgrid(0:dtheta:theta,0:dR:R)

Наконец: i и j обозначают мнимую единицу в MATLAB, и я бы поспорил против их использования в качестве обычных переменных по причинам, упомянутым в этом посте, но это мое мнение.

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