MATLAB如何画图
这篇文章主要介绍了MATLAB如何画图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
10年积累的成都网站设计、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有资源免费网站建设让你可以放心的选择与我们合作。
最近需要做点东西,其中一步就需要画上面这种图,如上图所示,我想把左边的各个红色方块与右边所有的蓝色圆圈连线连起来。一般情况下我们都是用两层for循环然后plot,但是这篇推送将说明一下如何用arrayfun来完成该图的绘制。(arrayfun中嵌套着arrayfun)
实际上后来,我统计了一下 用for循环和用arrayfun这两种方法的运行的时间发现这两种方法耗时基本一样,甚至用for循环这种方法的耗时要比用arrayfun这种方法的耗时要小一点点,不过用arrayfun要简洁点。
看程序之前,之前先复习一下arrayfun吧
|
|
V
避免无用的循环——fun系列的另外三个函数
代码:
clear
clc
close all
% 输入设备的坐标
in_x = zeros(1, 10);
in_y = linspace(0, 100, 10);
% 输出设备的坐标
out_x = 200.*ones(1, 30);
out_y = linspace(0, 100, 30);% 方法1:arrayfun
tic
figure(1)
ax = axes('NextPlot', 'add');
f = @(x, y) arrayfun(@(x_out, y_out) plot([x, x_out], [y, y_out]), out_x, out_y);
arrayfun(f, in_x, in_y)
toc
% 方法2:for循环
tic
figure(2)
ax2 = axes('NextPlot', 'add');
for i = 1 : length(in_x)
for j = 1 : length(out_x)
plot([in_x(i) out_x(j)], [in_y(i) out_y(j)])
end
end
toc
用arrayfun的方法,那两句的解释如下:
实际上用一层for循环,再用一个arrayfun这样运行速度会块一倍,如下面的方法三,我用arrayfun嵌套arrayfun纯粹是想捣鼓一下。不过arrayfun再嵌套一个arrayfun确实简洁,但是可读性降低了,还运行的不快!
% 方法三:一层for循环再用一个arrayfun
tic
figure(3)
ax3 = axes('NextPlot', 'add');
for i = 1 : length(in_x)
f = @(x, y) line([in_x(i), x], [in_y(i), y]);
arrayfun(f, out_x, out_y)
end
toc
三种方法的运行时间如下:
我把那个输入的点数改成了100,输出的点数改成了300!
感谢你能够认真阅读完这篇文章,希望小编分享的“MATLAB如何画图”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
网站名称:MATLAB如何画图
本文网址:http://cdiso.cn/article/jhejoh.html