3

私はいくつかのPythonコードをMatlabに翻訳しています.PythonタプルのアンパックをMatlabに翻訳する最良の方法は何かを理解したいと思っています.

この例では、 aBodyはコンストラクターが入力として 2 つの関数を受け取るクラスです。

次のpythonコードがあります:

X1 = lambda t: cos(t)
Y1 = lambda t: sin(t)

X2 = lambda t: cos(t) + 1
Y2 = lambda t: sin(t) + 1

coords = ((X1,Y1), (X2,Y2))
bodies = [Body(X,Y) for X,Y in coords]

これは、次の Matlab コードに変換されます

X1 = @(t) cos(t)
Y1 = @(t) sin(t)

X2 = @(t) cos(t) + 1
Y2 = @(t) sin(t) + 1

coords = {{X1,Y1}, {X2,Y2}}
bodies = {}
for coord = coords,
    [X,Y] = deal(coord{1}{:});
    bodies{end+1} = Body(X,Y);
end

ボディの場所

classdef Body < handle

    properties
        X,Y
    end

    methods
        function self = Body(X,Y)
            self.X = X;
            self.Y = Y;
        end
    end

end

Matlab で python コードの最後の行を表現するためのより良い、よりエレガントな方法はありますか?

4

2 に答える 2

0

アムロの答えがうまくいくようです。ただし、新しいクラスを本当に必要としない、または作成したくない場合は、 STRUCTコマンドBodyを使用して構造体の配列を作成する簡単な方法があります。

X1 = @(t) cos(t);
Y1 = @(t) sin(t);
X2 = @(t) cos(t) + 1;
Y2 = @(t) sin(t) + 1;
bodies = struct('X',{X1 X2},'Y',{Y1 Y2});

この場合、配列の各要素はbodiesクラス オブジェクトではなく構造体ですが、ほとんど同じように使用できるはずです。

于 2009-11-16T03:52:08.087 に答える