【问题标题】:Plotting a series of 2D black and white plots in MATLAB在 MATLAB 中绘制一系列二维黑白图
【发布时间】:2010-02-28 18:37:31
【问题描述】:

我正在尝试在 MATLAB 中绘制一系列包含 1 和 0(实际上是黑白图像)的 2D 矩阵,这些矩阵以 3D 形式排序。

我目前的代码是:

function PlotthreeD()

 numrows = 100;
 numcols = 100;

 Plot1 = zeros(numcols);
 Plot1(20:50,20:50) = 1;

 Plot2 = zeros(numcols);
 Plot1(20:70,20:90) = 1;

 Plot3 = zeros(numcols);
 Plot3(20:50,20:50) = 1;

         B = cat(3, Plot1, Plot2, Plot3);

 figure; 
 offset = 100;
 hold on; 

 for i=1:3; 
     mesh(B(:,:,i)+offset*(i));
 end

end

是否有一个绘图命令(而不是网格)允许我将二维数组显示为实体形状(其中矩阵元素等于 1),而不是将这些区域显示为凸起(因为它们是网格) ?

【问题讨论】:

  • 第二行的错字:Plot2 = zeros(numcols); Plot1(20:70,20:90) = 1;

标签: matlab matrix plot


【解决方案1】:

这样就可以了:

numrows = 100;
numcols = 100;
close all;

Plot1 = zeros(numcols);
Plot1(20:50,20:50) = 1;

Plot2 = zeros(numcols);
Plot2(20:70,20:90) = 1;

Plot3 = zeros(numcols);
Plot3(20:50,20:50) = 1;

B = cat(3, Plot1, Plot2, Plot3);
B(B==0)=NaN;

figure;
offset = 100;
hold on;

for i=1:3;
    surf(B(:,:,i)+offset*(i)); 
end

【讨论】:

  • 非常感谢,帮了大忙。
【解决方案2】:

研究 Matlab 函数 imagesc()

【讨论】:

    【解决方案3】:

    SPY 也是查看二进制矩阵的好方法。

    【讨论】:

      【解决方案4】:

      函数pcolor 是一种选择。您必须注意的一件事是文档中的以下注释:

      默认shading是faceted, 它用一个单一的颜色为每个单元格着色 颜色。 C的最后一行和最后一列 在这种情况下不使用。

      因此,您可能希望通过将 1 添加到 numrows 和 numcols 来为矩阵添加额外的行和列零。

      以下是文档中的一些示例代码:

      pcolor(hadamard(20))
      colormap(gray(2))
      axis ij
      axis square
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-26
        • 2012-08-17
        • 2017-01-27
        • 2014-08-15
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        • 2011-03-15
        相关资源
        最近更新 更多