数学建模社区-数学中国

标题: Matlab实用函数------绘制盒子堆 [打印本页]

作者: 森之张卫东    时间: 2016-1-26 19:13
标题: Matlab实用函数------绘制盒子堆
首先,把盒子函数写出来!如下:
  1. <div>function h = boxs(Position, Size, color)</div><div>%box function</div><div>% Position=[1,2], Size=[2,4], color='r'</div><div>p1 = Position - Size/2; % p1 = [1,2]-[2,4]/2 = [ 0, 0]</div><div>p2 = Position + Size/2; % p2 = [1,2]+[2,4]/2 = [ 2, 4]</div><div>% (0,4)___(2,4)</div><div>x = [p1(1) p2(1) p2(1) p1(1)]; % x = [0 2 2 0] | |</div><div>y = [p1(2) p1(2) p2(2) p2(2)]; % y = [0 0 4 4] |__|</div><div>% (0,0) (0,2)</div><div>%{</div><div>盒子实例</div><div>plot([0 2 2 0],[0 0 4 4]'r');</div><div>fill([0 2 2 0],[0 0 4 4],'g')</div><div>axis([-10,10,-10,10])</div><div>%}</div><div>%plot(x,y,'r');</div><div>h = fill(x, y, color);</div><div>end</div>
复制代码
然后写盒子堆函数:
  1. <div>function [box_pos, box_size, box_E, h] = pile_box(type)</div><div>%画盒子堆函数</div><div>%时间:2016-1-26-four</div><div>if type == 1</div><div>    [x, y] = meshgrid(22:0.5:45, 0.1:0.5:3.5);</div><div>    box_pos = [x(:) y(:)];</div><div>    box_size = 0.5*ones(size(box_pos));</div><div>    box_E = 265*ones(size(box_pos,1),1);</div><div>elseif type == 2</div><div>    ...</div><div>end</div><div>
  2. </div><div>for i = 1:size(box_pos, 1)</div><div>    h(i) = boxs(box_pos(i,:), box_size(i,:), 'y');</div><div>    hold on</div><div>end</div><div>
  3. </div><div>axis([0 45 0 4])   %注意修改坐标轴范围!</div><div>end</div>
复制代码
效果如图:




2016-01-26 19_14_16-效果图.png (88.88 KB, 下载次数: 302)

2016-01-26 19_14_16-效果图.png


作者: 森之张卫东    时间: 2016-1-26 19:14
  1. function h = boxs(Position, Size, color)
  2. %box function
  3. % Position=[1,2], Size=[2,4], color='r'
  4. p1 = Position - Size/2; % p1 = [1,2]-[2,4]/2 = [ 0, 0]
  5. p2 = Position + Size/2; % p2 = [1,2]+[2,4]/2 = [ 2, 4]
  6. % (0,4)___(2,4)
  7. x = [p1(1) p2(1) p2(1) p1(1)]; % x = [0 2 2 0] | |
  8. y = [p1(2) p1(2) p2(2) p2(2)]; % y = [0 0 4 4] |__|
  9. % (0,0) (0,2)
  10. %{
  11. 盒子实例
  12. plot([0 2 2 0],[0 0 4 4]'r');
  13. fill([0 2 2 0],[0 0 4 4],'g')
  14. axis([-10,10,-10,10])
  15. %}
  16. %plot(x,y,'r');
  17. h = fill(x, y, color);
  18. end


  19. function [box_pos, box_size, box_E, h] = pile_box(type)
  20. %画盒子堆函数
  21. %时间:2016-1-26-four
  22. if type == 1
  23.     [x, y] = meshgrid(22:0.5:45, 0.1:0.5:3.5);
  24.     box_pos = [x(:) y(:)];
  25.     box_size = 0.5*ones(size(box_pos));
  26.     box_E = 265*ones(size(box_pos,1),1);
  27. elseif type == 2
  28.     ...
  29. end

  30. for i = 1:size(box_pos, 1)
  31.     h(i) = boxs(box_pos(i,:), box_size(i,:), 'y');
  32.     hold on
  33. end

  34. axis([0 45 0 4])   %注意修改坐标轴范围!
  35. end
复制代码


作者: 森之张卫东    时间: 2016-1-26 19:15
再添附件:

boxs.m

494 Bytes, 下载次数: 2, 下载积分: 体力 -2 点

motor_elep_define.m

206 Bytes, 下载次数: 1, 下载积分: 体力 -2 点

pile_box.m

447 Bytes, 下载次数: 1, 下载积分: 体力 -2 点


作者: 远行的小船儿666    时间: 2016-1-27 15:25
不错呦,值得看看                          

作者: 远行的小船儿666    时间: 2016-1-27 15:25
谢谢楼主分享                        

作者: 远行的小船儿666    时间: 2016-1-27 15:28
可是,具体的作用是什么呢?

作者: 远行的小船儿666    时间: 2016-1-27 15:28
可是,具体的作用是什么呢?

作者: wangzheng3056    时间: 2016-1-27 22:59
那个程序需要分步执行,注释%step1以上的先执行,然后在执行下面的就可以了

作者: attitude兵    时间: 2016-3-12 21:44
xxxxxxxxxxxxxxxxxx





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5