Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从Mathematica到Matlab的代码-表命令

我有来自mathematica的以下代码,并尝试使用matlab进行操作,但我做不到:

tX := Sum[Random[] - 0.5, {m}]/m m=1; km=10m; dataX = Table[tX, {km}] fig2 = ListPlot[dataX, PlotStyle -> {RGBColor[1, 0, 0], PointSize[0.015]}] 我是这样做的:

tx=sum(rand(1,m)-0.5) ./ m; m=100; km=100*m; datax=zeros(tx,1); for i=1:km datax(i,1)=[tx]; end 我有两个问题:
  1. 在mathematica中,tx :=表示每次使用变量tx都会对其求值。如何在Matlab中完成此操作?
  2. 我的代码中有一个或多个错误,因为当它给我绘图时,它给了我一条直线,但它应该给出很多点。

回答:

我相信这就是您想要的:

m = 1; km = 10*m; tX = @(m) sum( rand(m,1) - 0.5 )/ m; dataX = arrayfun(tX, m * ones(km,1)); plot(1:km, dataX, 'r.') 要生成tX的实例,只需键入tX(m) ,其中m是您想要的值。

解释其中的一些:

tX是一个函数句柄,等效于Mathematica中的tX[m_] := Sum[RandomReal[],{m}]/m 。

dataX使用arrayfun构造,该arrayfun将第一个插槽中的函数句柄应用于第二个插槽中向量的每个元素。该命令大致等效于Mathematica中的Table[tX[m],{km}] 。



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 07:33


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.