Вывод Python, читаемый в Matlab

#python #arrays #matlab #numpy

#python #массивы #matlab #numpy

Вопрос:

Я новичок в Python и пытаюсь записать массив numpy в формат, читаемый в Matlab, в следующем формате в массив [xi, yi, ti], разделенный точкой с запятой.

В Python я могу в настоящее время записать его в следующей форме, которая представляет собой массив numpy, напечатанный на экране / записанный в файл как [[xi yi ti]].

Вот код:

 import math
import random
import numpy as np
SPOT = []
f = open('data_dump.txt', 'a')
for i in range(10):
    X = random.randrange(6)
    Y = random.randrange(10)
    T = random.randrange(5)
    SPOT.append([X,Y,T])
SPOT = np.array(SPOT)
f.write(str(SPOT[:]))   
f.close()
  

Пожалуйста, подскажите, как мне следует поступить, чтобы иметь возможность записывать эти данные в формат, читаемый Matlab, как указано выше. Заранее спасибо!

Sree.

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос, добавив к нему этот код. С этим ничего нельзя сделать в качестве комментария

2. Что означают первые несколько строк data_dump.txt как выглядит? Вероятно, вы можете прочитать это в Matlab как есть.

Ответ №1:

Не очень обязательно записывать ваш array в специальный формат. Запишите его в обычный csv и используйте dlmread , чтобы открыть его в matlab .

На numpy стороне напишите свой array , используя np.savetxt('some_name.txt', aar, delimiter=' ')

Комментарии:

1. Спасибо всем! @CT Zhu: Я попытался использовать np.savetxt сейчас, и, кажется, это работает! Добавлено следующее, и оно записывается в формат, который читается в Matlab непосредственно как массив. Еще раз спасибо! np.savetxt(‘test.txt ‘, SPOT, fmt = ‘.5f’, разделитель=’,’, новая строка = ‘;n’, заголовок=’данные = […’, нижний колонтитул=’]’, комментарии = ‘#’)

Ответ №2:

Попробуйте scipy.io экспортировать данные для Matlab

 import scipy.io as sio

matlab_data = dict(SPOT=SPOT)
sio.savemat('data_dump.mat', matlab_data)
  

data_dump.mat это Matlab данные. Для получения более подробной информации см.http://docs.scipy.org/doc/scipy/reference/tutorial/io.html

Ответ №3:

Если у вас есть scipy, чем вы можете сделать:

 import scipy.io
scipy.io.savemat('/tmp/test.mat', dict(SPOT=SPOT))
  

И в matlab:

 a=load('/tmp/test.mat');
a.SPOT % should have your data
  

Ответ №4:

Спасибо всем и спасибо @CT Zhu за то, что дали мне знать!

Поскольку я не использую Scipy, я попробовал использовать np.savetxt, и, кажется, это работает! Добавлено следующее, и оно записывается в формат, который читается в Matlab непосредственно как массив. Еще раз спасибо!

 np.savetxt('test.txt', SPOT, fmt = '.5f', delimiter=',', newline = ';n', header='data =[...', footer=']', comments = '#') 
  

Ваше здоровье!
Sree.