MATLAB如何画图

发布时间:2021-12-30 17:22:42 作者:小新
来源:亿速云 阅读:155

这篇文章主要介绍了MATLAB如何画图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

MATLAB如何画图

最近需要做点东西,其中一步就需要画上面这种图,如上图所示,我想把左边的各个红色方块与右边所有的蓝色圆圈连线连起来。一般情况下我们都是用两层for循环然后plot,但是这篇推送将说明一下如何用arrayfun来完成该图的绘制。(arrayfun中嵌套着arrayfun)

实际上后来,我统计了一下 用for循环和用arrayfun这两种方法的运行的时间发现这两种方法耗时基本一样,甚至用for循环这种方法的耗时要比用arrayfun这种方法的耗时要小一点点MATLAB如何画图不过用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的方法,那两句的解释如下:

MATLAB如何画图

实际上用一层for循环,再用一个arrayfun这样运行速度会块一倍,如下面的方法三,我用arrayfun嵌套arrayfun纯粹是想捣鼓一下。不过arrayfun再嵌套一个arrayfun确实简洁MATLAB如何画图,但是可读性降低了,还运行的不快!

% 方法三:一层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

三种方法的运行时间如下:

MATLAB如何画图

我把那个输入的点数改成了100,输出的点数改成了300!

感谢你能够认真阅读完这篇文章,希望小编分享的“MATLAB如何画图”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

推荐阅读:
  1. Html5 画图
  2. matlab 基本用法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

matlab

上一篇:WebLogic 6.1的LOG配置有哪些

下一篇:MATLAB如何提取复杂文本中的数据

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》