【问题标题】:Code from mathematica to matlab -- table command从mathematica到matlab的代码——table命令
【发布时间】:2016-11-19 02:01:09
【问题描述】:

我有以下来自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. 我的代码中有一个或多个错误,因为当它给我绘图时,它给了我一条直线,但它应该给出很多点。

【问题讨论】:

    标签: matlab wolfram-mathematica


    【解决方案1】:

    我相信这就是你想要的:

    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 构造,它将第一个槽中的函数句柄应用于第二个槽中向量中的每个元素。该命令大致相当于 Mathematica 中的 Table[tX[m],{km}]

    【讨论】:

    • 没错。对了,你可以把sum(rand(m,1)-0.5)/m换成mean(rand(m,1))-0.5
    • 好点,要更改点大小,请将绘图命令更改为plot(1:km,dataX, 'r.','MarkerSize',WHAT_YOU_WANT)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多