检查矩阵元素

Check matrix element

我需要一个 (rho,theta) meshgrid,为此,我首先在笛卡尔坐标中定义了 meshgrid,然后将其转换为极坐标:

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

现在我得到的是极坐标中的网格,但由于它是方形网格,所以我得到了这个东西

我说大于 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

我怎样才能不那么复杂?

直接将笛卡尔坐标转换为极坐标:使用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 and j denote the imaginary unit 在 MATLAB 中,出于 post 中提到的原因,我反对将它们用作常规变量,但这是我的观点。

如果我们说 a 是您要使用的限制,您可以使用以下代码代替 for 循环:

R = (R<=a).*R

或者您也可以使用:

R(R>a) = 0