Иногда приходиться переписать небольшой кусочек кода из MATLAB, да и в целом по мере его использования появляется все больше привычки к его некоторым функциям.
Так что решил перенести пару функций из MATLAB в Mathematica.
linspace[x,y,n] – дает набор равномерных цифр от x до y размером n. x и y могут быть векторами или матрицами (для чисел отсюда, для векторов и матриц дописал сам):
[wlcode]linspace[x_?NumericQ, y_?NumericQ, n_Integer] := Array[# &, n, {x, y}];
linspace[x_List, y_List, n_Integer] :=
Module[{temp},
If[Dimensions@x != Dimensions@y, Abort[]];
temp = MapThread[linspace[#1, #2, n] &, {x, y}, 1];
temp[Transpose]
];[/wlcode]
linspace[x_List, y_List, n_Integer] :=
Module[{temp},
If[Dimensions@x != Dimensions@y, Abort[]];
temp = MapThread[linspace[#1, #2, n] &, {x, y}, 1];
temp[Transpose]
];[/wlcode]
Для получения нулевой матрицы можно использовать zeros, для единичной матрицы – eye:
[wlcode]zeros[x : Sequence[Integer__]] := ConstantArray[0, {x}];
eye[x_Integer] := IdentityMatrix[x];[/wlcode]Для того, чтобы избавиться от списков с одним елементом нужно использовать squeeze (отсюда):
eye[x_Integer] := IdentityMatrix[x];[/wlcode]Для того, чтобы избавиться от списков с одним елементом нужно использовать squeeze (отсюда):
[wlcode]squeeze[A_] := ArrayReshape[A, Dimensions[A]~DeleteCases~1][/wlcode]
Все они доступны в Economica.