检查矩阵元素
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
我需要一个 (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