代码从mathematica到matlab - table命令

时间:2011-02-12 17:21:23

标签: matlab wolfram-mathematica

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

1 个答案:

答案 0 :(得分: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}]