matlab中mapshow,函数式编程 - MATLAB中的Map函数?

函数式编程 - MATLAB中的Map函数?

我对MATLAB没有地图功能感到有些惊讶,所以我自己一起攻击了一个,因为它是我无法生存的东西。 那里有更好的版本吗? 有没有一个有点标准的MATLAB函数式编程库我缺少?

function results = map(f,list)

% why doesn't MATLAB have a Map function?

results = zeros(1,length(list));

for k = 1:length(list)

results(1,k) = f(list(k));

end

end

用法是例如

map( @(x)x^2,1:10)

7个解决方案

129 votes

简短回答:内置函数mean完全符合您的mean函数对数值数组的作用:

>> y = arrayfun(@(x) x^2, 1:10)

y =

1 4 9 16 25 36 49 64 81 100

还有两个其他类似行为的内置函数:mean(对单元格数组元素进行操作)和mean(对结构的每个字段进行操作)。

但是,如果您利用向量化,特别是使用逐元素算术运算符,则通常不需要这些函数。 对于您给出的示例,矢量化解决方案将是:

>> x = 1:10;

>> y = x.^2

y =

1 4 9 16 25 36 49 64 81 100

一些操作将自动跨元素操作(例如向向量添加标量值),而其他操作符具有用于逐元素操作的特殊语法(在操作符之前由mean表示)。 MATLAB中的许多内置函数被设计为使用逐元素操作(通常应用于给定维度,例如mean和mean)对向量和矩阵参数进行操作,因此不需要映射函数。

总而言之,这里有一些不同的方法来对数组中的每个元素进行平方:

x = 1:10; % Sample array

f = @(x) x.^2; % Anonymous function that squares each element of its input

% Option #1:

y = x.^2; % Use the element-wise power operator

% Option #2:

y = f(x); % Pass a vector to f

% Option #3:

y = arrayfun(f, x); % Pass each element to f separately

当然,对于这种简单的操作,选项#1是最明智(和有效)的选择。

gnovice answered 2019-08-12T02:33:52Z

10 votes

除了向量和元素操作之外,还有用于在单元阵列上映射函数的cellfun。 例如:

cellfun(@upper, {'a', 'b', 'c'}, 'UniformOutput',false)

ans =

'A' 'B' 'C'

如果' UniformOutput' 如果是真的(或没有提供),它将尝试根据单元格数组的尺寸连接结果,所以

cellfun(@upper, {'a', 'b', 'c'})

ans =

ABC

kwatford answered 2019-08-12T02:34:26Z

2 votes

一个相当简单的解决方案,使用Matlab的矢量化将是:

a = [ 10 20 30 40 50 ]; % the array with the original values

b = [ 10 8 6 4 2 ]; % the mapping array

c = zeros( 1, 10 ); % your target array

现在,打字

c( b ) = a

回报

c = 0 50 0 40 0 30 0 20 0 10

c(b)是对大小为5的向量的引用,其中c的元素由b给出。 现在,如果为这个参考向量赋值,则c中的原始值将被覆盖,因为c(b)包含对c中值的引用而没有副本。

doc answered 2019-08-12T02:35:06Z

1 votes

如果所需的结果是一个函数数组,似乎内置的arrayfun不起作用:例如:     地图(@(x)[x x ^ 2 x ^ 3],1:10)

下面的轻微mods使这项工作更好:

function results = map(f,list)

% why doesn't MATLAB have a Map function?

for k = 1:length(list)

if (k==1)

r1=f(list(k));

results = zeros(length(r1),length(list));

results(:,k)=r1;

else

results(:,k) = f(list(k));

end;

end;

end

Foo Bara answered 2019-08-12T02:35:38Z

0 votes

如果matlab没有内置的map功能,那可能是出于效率考虑。 在您的实现中,您使用循环来迭代列表的元素,这在matlab世界中通常是不受欢迎的。 大多数内置的matlab函数都是"矢量化",i。即 在整个数组上调用函数比在自己迭代它并为每个元素调用函数更有效。

换句话说,这个

a = 1:10;

a.^2

比这快得多

a = 1:10;

map(@(x)x^2, a)

假设您定义地图。

Dima answered 2019-08-12T02:36:24Z

0 votes

您不需要map,因为应用于值列表的标量函数将应用于每个值,因此类似于map。只需尝试

l = 1:10

f = @(x) x + 1

f(l)

在你的特殊情况下,你甚至可以写

l.^2

Dario answered 2019-08-12T02:36:56Z

-1 votes

如前面的答案所述,对解决方案进行矢量化可能是速度的最佳解决方案。 矢量化也非常Matlaby,感觉很好。

据说Matlab现在有一个Map容器类。

见[http://www.mathworks.com/help/matlab/map-containers.html]

TallBrianL answered 2019-08-12T02:37:35Z

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 定时java程序,Linux操作系统上定时运行Java程序的方法

运行crontab -e编辑一个job。例如0 30 * * * /home/your_login/bin/java_PRogram | | | | | | | | | | | | | | —day of the week (0-6 with 0Sunday). | | | —— month of the year (1-12), | | |_____day of the month (1-31), | | | |____hour (0-23), | minute (0-59),更…

怎么在同一页中分页_分库分表业界难题,跨库分页的几种常见方案

为什么需要研究跨库分页?互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息;(2)京东下单过多时,拉取第N页订单;(3)浏览58同城,查看第N页帖子;…

content add tpl.php,phpcms后台批量上传添加图片文章方法详解(一)

注:以下所有代码中,红色部分为增加部分。一、在后台增加批量添加按钮打开“phpcms\modules\content\templates\content_list.tpl.php”文件搜索“$category[‘catname‘]));?>”在这句话的后天的添加:a echo"" href":;&q…

sap 供应商表_财务人员学习SAP的路线图

有许多网友在公众号给我们留言,咨询财务人员学习SAP的事情,如何才能快速掌握SAP,有没有捷径什么的。今天就给大家分享一下财务人员学习SAP的经验,希望能够为财务人员揭开SAP神秘的面纱,学习SAP少走弯路。刚接触SAP的财…

nodejs搭配phantomjs highcharts后台生成图表

简单分享一下,后台使用nodejs结合highcharts、phantomjs生成报表图片的方法。这主要应用在日报邮件。 主要参考以下资料: http://www.highcharts.com/component/content/article/2-news/52-serverside-generated-charts#phantom_usagehttps://bitbucket.…

mysql4函数,mysql笔记4_函数_MySQL

常用函数:concat 连接函数 Lower 转小写 upper 转大写 Length 长度 substr 子串 now 当前时间 Year 当前年份...流程函数:ifnull(column,result1,result2) 判定字段为空则返回result2,不为空则result1。case...when...then...else...end 分支…

python实战扫码下载_实例:用 Python 做一个扫码工具

原标题:实例:用 Python 做一个扫码工具来自公众号: 新建文件夹X链接:https://blog.csdn.net/ZackSock/article/details/108610957Python实现扫码工具二维码作为一种信息传递的工具,在当今社会发挥了重要作用。从手机用…

前端小问题4

爱、喜悦、和平。 1、文字一个一个显示 js代码 <script type"text/javascript">window.οnlοadfunction(){var story document.getElementById(sto);var s document.getElementById(show);var a story.innerHTML.slice("");var i 0;timersetInt…

matlab解带参数的积分方程组,方程组求解问题:方程组中有带参数的积分函数,求参数...

吴老师&#xff0c;您好&#xff01;请教您一个问题。我想求下面方程组的解&#xff1a;quadl((x) exp(a(1)a(2)*xa(3)*x.^2a(4)*x.^3a(5)*x.^4),-100,100)-1;quadl((x) x.*exp(a(1)a(2)*xa(3)*x.^2a(4)*x.^3a(5)*x.^4),-100,100)-m1;quadl((x) x.^2.*exp(a(1)a(2)*xa(3)*x.^2a…

vue 页面切换动画_Flutter Hero动画让你的APP页面切换充满动效 不一样的体验 不一样的细节处理...

优美的应用体验 来自于细节的处理&#xff0c;更源自于码农的自我要求与努力&#xff0c;当然也需要码农年轻灵活的思维。本文章实现的Demo效果&#xff0c;如下图所示&#xff1a;class HeroHomePage extends StatefulWidget { override _TestPageState createState() > …

自定义左右侧滑菜单

实现效果&#xff1a; 左右侧滑菜单&#xff0c;侧滑栏占主屏比为60%监听触控&#xff0c;自定义滑动动画&#xff0c;当侧边栏滑动超过50%松开触控将自动滑动到60%&#xff0c;未超过50%松开触控回归侧边栏隐藏为主屏设置蒙版效果&#xff0c;根据侧滑菜单的占屏比设置主屏蒙版…

秦九韶算法matlab程序,数值分析matlab程序实例.doc

数值分析matlab程序实例1&#xff0c;秦九韶算法&#xff0c;求出P(x3)24x5x^22x^3的值clear?all;x3;n3;a(1)2;a(2)4;a(3)5;a(4)2v(1)a(n1);for k2:(n1);v(k)x*v(k-1)a(n-k2);end?pv(n1)p ,1132&#xff0c;一次线型插值程序&#xff1a;利用100.121.求115的开方。clear all;…

在github上创建新分支

在github上创建仓库&#xff1a; Create a new repository on the command line touch README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/BrentHuang/MyRepo.git git push -u origin master 在本地新建…

以python程序调用的系统_python 系统调用的实例详解

python 系统调用的实例详解本文将通过两种方法对python 系统调用进行讲解&#xff0c;包括python使用CreateProcess函数运行其他程序和ctypes模块的实例&#xff0c;一 python使用CreateProcess函数运行其他程序>>> import win32process>>> handle win32pro…

ubuntu php7 memcache,linux上安装php7 memcache扩展

php7安装memcache扩展需要memcache php7的分支 否则安装会失败php7的memcache扩展安装&#xff0c;真的很让人心碎&#xff01;下面则是php7的扩展memcache安装了。用之前的php版本安装是没有问题&#xff0c;但是用了php7安装 http://pecl.php.net/package/memcache 下的任一…

好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界

好文原文地址&#xff1a;http://segmentfault.com/a/1190000000354555 本文将首先介绍grunt-markdown插件如何配合HTML模板使用&#xff0c;接着我将介绍如何使用grunt-watch插件将工作效率提升至新层次。如果你不熟悉GruntJS&#xff0c;请先阅读我关于GruntJS的文章。 Githu…

python3有多少个关键字排序_python3 数据结构和算法-- 通过某个关键字排序一个字典列表...

通过某个关键字排序一个字典列表问题你有一个字典列表&#xff0c;你想根据某个或某几个字典字段来排序这个列表。解决方案通过使用 operator 模块的 itemgetter 函数&#xff0c;可以非常容易的排序这样的数据结构。 假设你从数据库中检索出来网站会员信息列表&#xff0c;并且…

php页面怎么去登录,php中登录后跳转回原来要访问的页面实例

在很多网站用户先访问一个要登录的页面&#xff0c;但当时没有登录后来登录了&#xff0c;等待用户登录成功之后肯定希望返回到上次访问的页面&#xff0c;下面我就来给大家介绍登录后跳转回原来要访问的页面实例最简单的办法就是直接使用php $_SERVER[HTTP_REFERER]如果我在A.…

三目运算

total>100?total*0.8:total;//true执行冒号前面的&#xff1b;false执行冒号后面的 等价于 if(total>100){ totaltotal*0.8; }else{ totaltotal; }转载于:https://www.cnblogs.com/barbie7/p/5129566.html

二叉树的创建_大多数人都不会手写创建并遍历二叉树,一航这里帮你终结了

创建二叉树、遍历二叉树、二叉树的最近公共祖先任何疑问、意见、建议请公众号留言或联系qq474356284先序、后序创建二叉树先中后层序遍历二叉树二叉树的最近公共祖先 输入格式&#xff1a;创建二叉树时的输入&#xff1a;如序列&#xff1a;{1 2 -1 -1 3 -1 -1}表示1结点有2,…