为 post 分析定义半径内的点
Define points within a radius for post analysis
我是 matlab 的新手,正在尝试解决问题。我有一个 50x50 的矩阵。它代表我在涡轮机后面记录的数据。涡轮机基本上放置在该平面的中心点 (25,25) 处。它的半径为 5。因此它到达矩阵中心左侧的 (20,25) 和右侧的 (30,25)。我知道距离计算公式是pdist([dpx,dpy;centerx,centery])
。但是我该如何设置它,以便 matlab 识别半径为 5 的所有点。我试图将所有这些点(仅涡轮半径内的点)乘以它们与矩阵中心的距离。我想象需要一个 for 循环,但我不知道如何应用它。
创建坐标网格:
[x, y] = meshgrid(1 : 50);
计算每个网格点距(25, 25)的距离:
d = sqrt((x - 25) .^ 2 + (y - 25) .^ 2);
为涡轮区域内的每个网格位置生成一个包含 1(真)的逻辑数组:
turb = (d <= 5);
您可以绘制结果:
imagesc(turb)
axis equal tight
或使用 turb
从测量矩阵中选择值 m
m(turb)
使用 logical indexing.
请注意,索引 (25, 25) 不表示 50 x 50 网格的中心,而是 (25.5, 25.5)。
使用逻辑索引,您可以在矩阵中找到相关索引并且 select 只有它们:
[x,y] = meshgrid(1:50);
centered_valued = ((x-25).^2+(y-25).^2 <= 5^2);
requested_matrix = originalMatrix(centered_values);
meshgrid
函数计算两个矩阵:第一个包含每一行的 x 索引,第二个包含 y 每列的索引。
然后您使用布尔计算来查找距离中心(位于 (25,25))半径范围内的索引。
此逻辑数组可用作原始矩阵的 "index"。结果将是一个较小的矩阵(尽管您可能被迫使用 (:)
运算符,因为结果不一定是矩形矩阵)。
如果您有图像处理工具箱,也可以使用bwdist
命令为您计算距离。
创建一个选择了中心点的蒙版:
bw = zeros(50,50); bw(25,25) = 1;
计算从中心到每个点的距离(注意bwdist
也允许多种距离计算,详见doc bwdist
)
distance = bwdist(bw);
创建涡轮像素蒙版:
turbine = (distance <= 5);
您问的是将涡轮机中的像素乘以它们到中心的距离。如果原始数据存储在50x50矩阵orig
,那么你可以这样做:
orig(turbine) = orig(turbine) .* distance(turbine);
我是 matlab 的新手,正在尝试解决问题。我有一个 50x50 的矩阵。它代表我在涡轮机后面记录的数据。涡轮机基本上放置在该平面的中心点 (25,25) 处。它的半径为 5。因此它到达矩阵中心左侧的 (20,25) 和右侧的 (30,25)。我知道距离计算公式是pdist([dpx,dpy;centerx,centery])
。但是我该如何设置它,以便 matlab 识别半径为 5 的所有点。我试图将所有这些点(仅涡轮半径内的点)乘以它们与矩阵中心的距离。我想象需要一个 for 循环,但我不知道如何应用它。
创建坐标网格:
[x, y] = meshgrid(1 : 50);
计算每个网格点距(25, 25)的距离:
d = sqrt((x - 25) .^ 2 + (y - 25) .^ 2);
为涡轮区域内的每个网格位置生成一个包含 1(真)的逻辑数组:
turb = (d <= 5);
您可以绘制结果:
imagesc(turb)
axis equal tight
或使用 turb
从测量矩阵中选择值 m
m(turb)
使用 logical indexing.
请注意,索引 (25, 25) 不表示 50 x 50 网格的中心,而是 (25.5, 25.5)。
使用逻辑索引,您可以在矩阵中找到相关索引并且 select 只有它们:
[x,y] = meshgrid(1:50);
centered_valued = ((x-25).^2+(y-25).^2 <= 5^2);
requested_matrix = originalMatrix(centered_values);
meshgrid
函数计算两个矩阵:第一个包含每一行的 x 索引,第二个包含 y 每列的索引。
然后您使用布尔计算来查找距离中心(位于 (25,25))半径范围内的索引。
此逻辑数组可用作原始矩阵的 "index"。结果将是一个较小的矩阵(尽管您可能被迫使用 (:)
运算符,因为结果不一定是矩形矩阵)。
如果您有图像处理工具箱,也可以使用bwdist
命令为您计算距离。
创建一个选择了中心点的蒙版:
bw = zeros(50,50); bw(25,25) = 1;
计算从中心到每个点的距离(注意bwdist
也允许多种距离计算,详见doc bwdist
)
distance = bwdist(bw);
创建涡轮像素蒙版:
turbine = (distance <= 5);
您问的是将涡轮机中的像素乘以它们到中心的距离。如果原始数据存储在50x50矩阵orig
,那么你可以这样做:
orig(turbine) = orig(turbine) .* distance(turbine);