How could I Transform some lines from Matlab to Python ::

2 Ansichten (letzte 30 Tage)
Mark Sc
Mark Sc am 10 Okt. 2021
Kommentiert: Mark Sc am 11 Okt. 2021
I am trying to transform the following lines into python, I already did however, I got an error not sure if I did it correct or not as I am new to python not sure about some lines: I attached both codes : In matlab (works fine):
clear all;
for ii = 1:nu_y
if (ii == 1)
t1 = 0;
t2 = p(ii);
Z(1:4) = linspace(t1,t2,4)
else
t1 = Z(3*ii-2);
t2 = t1+p(ii);
Z(3*ii-2:3*ii+1) = linspace(t1,t2,4)
end
end
In python:
import numpy as np
nu_x = 1
nu_y = 2
p = np.array([0.2,0.2])
for ii in range (nu_y):
if (ii == 1):
t1 = 0
t2 = p[ii]
Z[1,3] = np.linspace(t1,t2,3)
else:
t1 = Z[2*ii-1]
t2 = t1+p[ii]
Z[2*ii-1,2*ii+1] = linspace(t1,t2,3)

Antworten (1)

Walter Roberson
Walter Roberson am 10 Okt. 2021
for ii = 1:nu_y
if (ii == 1)
That is intended to test for the first ii
for ii in range (nu_y):
if (ii == 1):
In Python, the first ii value is 0
Z(1:4) = linspace(t1,t2,4)
In MATLAB, that would be the first four entries in Z
Z[1,3] = np.linspace(t1,t2,3)
You have asked python to create a list with three elements (not 4 like you did in MATLAB), and you have asked Python to assign it to single location in a 2D array. If you were wanting to assign to the first three elements in Z then you should assigning to Z[0:2] .
It is not clear to me why you changed from 4 elements in MATLAB into 3 elements in Python.
  6 Kommentare
Mark Sc
Mark Sc am 11 Okt. 2021
Thank you so much for your help, however still unfortunely gives wrog answer, ?
Not as Matlab ??
Mark Sc
Mark Sc am 11 Okt. 2021
@Walter Roberson I attached the modified version of the code,
if you are run the same in Matlab give you different answer
import numpy as np
nu_x = 1
nu_y = 4
p = np.array([0.2,0.2,0.1,0.4])
Z=[]
for ii in range(nu_y):
if (ii == 0):
t1 = 0
t2 = p[ii]
Z[0:3] = np.linspace(t1,t2,4)
else:
t1 = Z[2*ii-2]
t2 = t1+p[ii]
Z[3*ii-3:3*ii] = np.linspace(t1,t2,4)
print(Z)
In matlab:
clear all;
nu_y=4;
p=[0.2,0.2,0.1,0.4]
for ii = 1:nu_y
if (ii == 1)
t1 = 0;
t2 = p(ii);
Z(1:4) = linspace(t1,t2,4)
else
t1 = Z(3*ii-2);
t2 = t1+p(ii);
Z(3*ii-2:3*ii+1) = linspace(t1,t2,4)
end
end
Z

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Call Python from MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by