Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-10-27
年龄: 43
帖子: 2
声望力: 0 ![]() |
![]()
有个matlab程序,运行结果不是我想得到的效果。
我的目的是想生成一幅二值图像,白色背景,由随机分布的50个黑色矩形构成,也就是说矩形的位置是随机的。其次,矩形宽服从正态分布,高是宽的两倍。 请高手帮忙,程序如下: f=ones(256,256); %生成全为1的256阶矩阵 subplot(131);imshow(f); %显示(白色矩阵) x=unidrnd(256^2,1,50); %生成50个不超过256的平方的均匀随机数 for i=1:50 f(x(i))=0; end %50个随机点处像素值改为0(50个黑点) subplot(132);imshow(f); y=normrnd(15,1,1,50); %生成50个正态分布N(15,1)随机数 y=round(y); z=2*y; for i=1:50 for k=1:z(i) if x(i)+k>256^2 break; else f(x(i)+k)=0; for n=1:y(i) if y(i)*256+x(i)>256^2 break; else f(y(i)*256+x(i))=0; f(y(i)*256+x(i)+k)=0; end end end %对每个黑点x(i),将以该点为左上角顶点的高为z(i), 宽为y(i)的矩形区域内的点全都赋值0(即变黑) subplot(133),imshow(f); 直接复制到matlab下,可以运行。:ft: |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-10-27
年龄: 43
帖子: 2
声望力: 0 ![]() |
![]()
补充
我的想法是, 第一步,生成一个白色矩阵 第二步,确定随机的50个位置作为黑色矩形的左上角顶点 第三步,产生50个正态随机数,然后取整,于是得到50个矩形的大小即长与宽 第四步,以50个黑点为矩形左上角顶点,将其下方的一个矩形区域都赋值0,变黑。 问题出现在第四步,程序执行后没有返回最终的图像。不知道为何:'( |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
如何实现gui窗口嵌套 | beulah | MATLAB论坛 | 1 | 2008-12-28 17:57 |
Cleve’s Corner: Experiments with MATLAB | TechnicalArticles | MATLAB技术文章 | 0 | 2008-12-19 05:51 |
[求助]汽车车牌字符分割 | zhaokunyao | MATLAB论坛 | 0 | 2008-12-15 23:27 |
[求助]怎么改变控件的背景颜色 | sjuie_192 | MATLAB论坛 | 0 | 2008-12-13 11:34 |
[求助]通信系统仿真:条件是MIMO(2*2),平坦瑞利衰落,用QPSK调制 | lmg123 | MATLAB论坛 | 0 | 2008-12-13 10:30 |