2015-02-20 2 views
1

Я хотел бы преобразовать 2 фрагмента кода Matlab в Python/Matplotlib.Matlab to Matplotlib

Это первый фрагмент.

Xs = 1.8; 
fs = 10; 
fi = pi/3; 

t1 = -0.1; 
t2 = 0.2; 
t = [t1, t2]; 

x = inline('Xs * sin(2 * pi * fs * t + fi)','t','Xs','fs','fi'); 
fplot(x, t, 2e-3, 1,'-', Xs, fs, fi) 
xlabel('t'); ylabel('x_s'); grid on 
title('x_s(t) = X_s sin(2 \pi f_s t + \phi_s)') 

Первые 6 SLOC, которые я могу преобразовать в python, потому что они являются основным назначением переменной. Однако для SLOC 7 я не знаю эквивалента функции Matlab inline() в Matplotlib, если предположить, что она есть. Я искал пространство имен Numpy и нет функции с именем «inline». Я также был встречен сообщением об ошибке, подтверждающим вышеуказанный оператор при запуске кода. Кроме того, на SLOC 8 функция fplot() и формат некоторых ее параметров я не могу найти эквивалент в Matplotlib. Функция fplot() также не входит в пространство имен Pylab.

Второй фрагмент кода не сильно отличается, чем первый, я отправлю его так же, как усиливающих выше:

x = inline('Xe*exp(b*t)','t','Xe','b'); 

Xe = 0.8; 
b = -0.5; 

t1 = 0; 
t2 = 8; 
t = [t1, t2]; 

fplot(x,t,2e-3,1,'-',Xe,b) 
xlabel('t') 
ylabel('x_e') 
title('x_e(t) = X_e e^{b t}') 
grid on 

У меня очень мало опыта как Matlab и Python/Matplotlib, однако, у меня есть удалось преобразовать некоторые другие фрагменты кода Matlab в Matplotlib. Я работаю над портфолио для школы, который требует использования Matlab для построения графика. Однако Matlab не является бесплатным, поэтому я решил использовать Matplotlib.

Заранее благодарю за помощь.

ответ

1

Для «встроенного» эквивалента вы можете использовать функции «лямбда».

+0

Не могли бы вы дать мне дополнительную информацию, может быть, иллюстрация функции лямбда, выполняющей то, что делает один из приведенных выше встроенных фрагментов кода? –

+0

@ rgb-one, например 'x = lambda t, Xe, b: Xe * exp (b * t)', ранее определенный 'из numpy import exp'. – cosmoscalibur