перевести код в matlab

Форум пользователей пакета Mathematica

Модератор: Admin

werom
Сообщения: 2
Зарегистрирован: Чт май 10, 2012 5:20 am

перевести код в matlab

Сообщение werom » Чт май 10, 2012 5:32 am

Здравствуйте, помогите пожалуйста. Если кто-то знаком и с Mathematica и с MATLAB переведите пожалуйста этот код в MATLAB

Код: Выделить всё

Primer[t_, s_, tI_, T_, B_, opt_] :=
  Module[{Np = Length[t], K, \[Phi], a, \[CapitalDelta]f, TT},
   TT = Np T;
   \[CapitalDelta]f = 1/TT;
   If[opt === 1,
    K = Min[{Floor[(Np B T - 1)/2], Np}],
    K = Min[{Ceiling[(Np B T - 1)/2], Np}]];
   If[K > Np, Abort[]];
   \[Phi] =
    Table[E^(I 2 Pi k \[CapitalDelta]f t[[n]]), {n,
      Length[t]}, {k, -K, K}];
   a = LeastSquares[\[Phi], s];
   
   Re[Table[
     a.Table[E^(I 2 Pi k tI[[p]]/TT), {k, -K, K}], {p, Length[tI]}]]
   ];

tutm
Сообщения: 5
Зарегистрирован: Чт дек 27, 2012 6:24 pm

Сообщение tutm » Сб дек 29, 2012 3:48 am

% это не полная,бо не знаю LeastSquares,и типы ваших
% данных с размерностями
% Primer([1 2 3 4],2,[1 2 3 4],4,5,1)
% выдаёт 9х9 матрицу



function out = Primer(t,s,tI,T,B,opt)
Np = length(t);
TT = Np*T;
df = 1./TT;
if opt==1
K = min([floor((Np*B.*T-1)/2) Np]);
else
K = min([ceil((Np*B.*T-1)/2) Np]);
end
if K>Np,error('K > Np');end
fi = exp(2i*pi*df*t'*(-K:K));
%a = LeastSquares(fi,s);
a = fi;
out = real( rot90(a)*exp( (2i*pi*df*tI'*(-K:K))/TT ) );