Код из mathematica в matlab - табличная команда - PullRequest
1 голос
/ 12 февраля 2011

У меня есть следующий код от 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 Ответ

1 голос
/ 12 февраля 2011

Я считаю, что это то, что вы хотите:

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 - дескриптор функции, он эквивалентен tX[m_] := Sum[RandomReal[],{m}]/m в Mathematica.

dataX состоит из arrayfun, который применяет дескриптор функции в первом слоте к каждому элементу вектора во втором слоте. Эта команда примерно эквивалентна Table[tX[m],{km}] в Mathematica.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...