matlab - 我怎样才能在Matlab中绘制这个管网?

标签 matlab networking drawing

enter image description here

我有一个管半径r的分布,我想在单个图中绘制所有采样的r的管,如上图所示。该管具有以下特点:

  • 所有 pipe 的长度都是恒定的,但半径是变化的。

  • 最窄的 pipe 将被完全充满 颜色为浅灰色。

  • 所有其他 pipe 中从底部开始的浅灰色长度是 与管的半径成反比,即

    从底部开始的浅灰色长度=常数/r

  • pipe 的剩余长度将填充深灰色。

  • r 的大小和每根 pipe 的总长度约为 1e-005m 和 1e-002 m ,因此需要与 X 和 Y 轴单位进行标准化。

  • 白色的空隙只是空间而不是 pipe 。

更新(基于鲍里斯的回答)

这是 Boris 的代码,我根据上面描述的 pipe 的特性进行了某些更改。我遇到了缩放问题,因为我无法像上图所示那样清晰地可视化我的管道网络。

function drawGrayTube (x, r, sigma_wn, theta, del_rho, rmin, rmax,L)
% sigma_wn is in N/m (=Kg/s^2), theta is in degrees, del_rho is in Kg/m^3
% and L is in m
h=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*r));
hmin=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*rmax));
hmax=((2*sigma_wn*cos((pi/180)*theta))./(del_rho*9.81.*rmin));

rectangle ('Position',[x,0,r/rmax,h], 'FaceColor',[0.7,0.7,0.7]);
ylim([0 1]);

if L>h
    rectangle ('Position',[x,L,r/rmax,L-h], 'FaceColor',[0.3,0.3,0.3]);
    ylim([0 1]);
else
    rectangle ('Position',[x,L,r/rmax,L], 'FaceColor',[0.3,0.3,0.3]);
    ylim([0 1]);
end

end

最佳答案

例如,可以使用一个简单的函数来绘制灰色管

function drawGrayTube (x, w, h)
    rectangle ('Position',[x,0,w,h], 'FaceColor',[0.7,0.7,0.7]);
    rectangle ('Position',[x,h,w,100-h], 'FaceColor',[0.3,0.3,0.3]);
end

其中,x是 pipe 的x位置,w表示宽度,h表示0之间100 pipe 浅灰色部分的高度。

您现在可以通过调用在示例中使用它

drawGrayTube (x, r, 100*constant/r)

您必须调整常量,使 constant/r 最多为 1

您可以为白色间隙编写类似的函数。

假设您给出了一个半径向量(已进行缩放,使得值介于 0 和 1 之间),例如,r=[0.5, 0.7, 0.9, 0.1, 0.5, 0.01]那么绘制 pipe 的可能性是

interspace = 0.5;
for i=1:length(r)
    drawGrayTube(sum(r(1:i-1))+i*interspace, 100*r(i)+1e-10, r(i)+1e-10); 
end

关于matlab - 我怎样才能在Matlab中绘制这个管网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531200/

相关文章:

matlab - 将变量传递给 MATLAB 中的类

arrays - 如何去掉 Matlab 单元格中的双引号?

networking - 如何获取Kubernetes中Pod之间的流量

android - 在 View 上启用 HW 加速的矩形叠加层中打洞

java - 优化Java中的Draw方法

matlab - Matlab 中的颜色条重复范围标签

matlab - 如何在 MATLAB 中生成 0 或 1 的随机整数

Python P2P 网络(NAT Punchtrough)

java - 如何修复在给出 "SocketException: Permission denied: connect"的命令行窗口中使用的 jarsigner 问题

c# - 创建充满点的多边形