X=(-5:.5:5)
Z=(-3:.5:3)
[x z]=meshgrid(X,Z)
必须删除所需元素的截止函数是半径为1的圆 (X-1)^ 2 +(Z-1)^ 2'= 1 我们如何管理循环以将这些元素0放在输出数据中?
答案 0 :(得分:3)
我首先假设x
和z
表示将评估某些二维函数f
以生成输出的坐标。鉴于x
和z
在您的示例中最终为13 x 21矩阵,f
的输出也应为13 x 21。然后,您可以找到一个logical index,表示您的圆圈内的点,并使用此索引将输出矩阵中的点设置为零:
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
答案 1 :(得分:0)
我认为你在寻找的是:
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
希望这会有所帮助 - 否则我会放弃; - )。