2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 замена символов в таблице mathematica
Сообщение30.06.2014, 13:38 


14/03/12
52
Здравствуйте,
Импортировал данные в Mathematica для обработки. В цифрах присутствуют символы "E", что означает "*10^" и "i", что означает мнимую единицу.
Как заменить "E" на "*10^" , а "i" на "I" командой? Дело в том, что каждый раз неудобно вручную делать Сtrl+F - FInd and Replace.

Заранее благодарен.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 14:04 
Заслуженный участник


25/02/11
1797
Если данные в виде строк, то команда StringReplace. Если в виде списка чисел, то сначала можно применить к нему ToString, перобразовать, а потом ToExptession.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 15:37 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Очевидно, что данные в виде строк. Пусть мы имеем, например,
data = {"2.12E1-1+4i", "3.14E2-2i", "-11.44E-2+1.11i"};
Тогда с помощью
ToExpression@StringReplace[data, {"E" -> "*10^", "i" -> "I"}]
получаем то, что нужно.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 16:41 


14/03/12
52
Господа, спасибо! Принцип понял! Следующий вопрос - как вставить кавычки в каждый элемент строки? У меня данные в виде таблицы.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 18:33 
Заслуженный участник


27/04/09
28128
Кавычки просто не отображаются при выводе строки в OutputForm (и, может, ещё в каких-то), но они там есть.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 18:47 


14/03/12
52
arseniiv в сообщении #882357 писал(а):
Кавычки просто не отображаются при выводе строки в OutputForm (и, может, ещё в каких-то), но они там есть.

если их убрать, то пример Aritaborian выдаёт failed

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 18:49 
Заслуженный участник


27/04/09
28128
Тогда я неправильно понял вас.

Из примера их убирать не надо, но если импортирован список строк, к его элементам кавычки добавлять не нужно.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение30.06.2014, 23:40 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
2012, давайте разберёмся. В каком формате вы импортируете данные?

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 09:45 


14/03/12
52
Aritaborian в сообщении #882490 писал(а):
2012, давайте разберёмся. В каком формате вы импортируете данные?

Импортирую в виде таблицы
Код:
{{2.5*10^14,
  "-0.0038147498817485063+8.279487591496779E-4i"}, {2.51*10^14,
  "-0.003729687450719608+9.94969042170409E-4i"}, {2.52*10^14,
  "-0.0036211600058859493+0.0011484939817962806i"},...},

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 12:40 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Ну тогда нужно, как указывал arseniiv, сначала перевести данные в строковый формат (ToString), а затем действовать по моему рецепту.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 15:20 
Заслуженный участник


27/04/09
28128
Так вот же они, строки — во вторых элементах каждой пары. С ними и провести обряд, остальное трогать не надо. Надеюсь, вы не имели в виду преобразование всего сразу в строку.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 15:33 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Блин, внимательнее нужно быть :facepalm: Ну тогда берём второй столбец и преобразуем только его. Без ToString, конечно же.
Хотя... Да пофиг, на самом-то деле. Попытка преобразования строки в строку не выдаст ошибки. So, можно не обращать внимания, что там в кавычках, а что без, и работать со всем списком сразу, как я с самого начала и предлагал. Конвертируем всё в строки, находим-заменяем, конвертируем обратно в числа.

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 16:51 


14/03/12
52
Ребята, вышло!
Код:
In[430]:= h1 = Import["C:\\1.txt", "String"]

Out[430]= "% Model:              1.mph
% Version:            COMSOL 4.4.0.150
% Date:               Jul 1 2014, 12:36
% Table:              Table 6 - Line Average 1 (emw.Hz)
% freq                                            Magnetic field, z \
component (A/m)
2.5E14                                            \
-0.003662239310465777-4.05264920233293E-4i
2.51E14                                           \
-0.003769916226571995-2.2145684579596164E-4i
2.52E14                                           \
-0.0038433889431836424-2.1631262077027855E-5i
2.53E14                                           \
-0.003881062128518195+1.8783739515669515E-4i
2.54E14                                           \
-0.00388250522422471+4.0061534949025753E-4i
2.55E14                                           \
-0.0038483662891500656+6.106092250516684E-4i
2.56E14                                           \
-0.003780257529840293+8.121319574146916E-4i
2.57E14                                           \
-0.0036806223896576444+0.001000033393841302i
2.58E14                                           \
-0.0035525929565530206+0.0011697963733597594i
2.59E14                                           \
-0.003399845006246796+0.0013176007358062021i"

In[431]:= h2 = StringDrop[h1, 247];

In[433]:= h3 = StringReplace[h2, {"E" -> "*10^", "i" -> " I"}]

Out[433]= "2.5*10^14                                            \
-0.003662239310465777-4.05264920233293*10^-4 I
2.51*10^14                                           \
-0.003769916226571995-2.2145684579596164*10^-4 I
2.52*10^14                                           \
-0.0038433889431836424-2.1631262077027855*10^-5 I
2.53*10^14                                           \
-0.003881062128518195+1.8783739515669515*10^-4 I
2.54*10^14                                           \
-0.00388250522422471+4.0061534949025753*10^-4 I
2.55*10^14                                           \
-0.0038483662891500656+6.106092250516684*10^-4 I
2.56*10^14                                           \
-0.003780257529840293+8.121319574146916*10^-4 I
2.57*10^14                                           \
-0.0036806223896576444+0.001000033393841302 I
2.58*10^14                                           \
-0.0035525929565530206+0.0011697963733597594 I
2.59*10^14                                           \
-0.003399845006246796+0.0013176007358062021 I"

Но как теперь мне обратно в виде таблице перевести?
Чтобы было вот так:
Код:
In[435]:= h4 = Import["C:\\1.txt", "Table"]

Out[435]= {{"%", "Model:", "1.mph"}, {"%", "Version:", "COMSOL",
  "4.4.0.150"}, {"%", "Date:", "Jul", 1, "2014,", "12:36"}, {"%",
  "Table:", "Table", 6, "-", "Line", "Average", 1, "(emw.Hz)"}, {"%",
  "freq", "Magnetic", "field,", "z", "component",
  "(A/m)"}, {2.5*10^14,
  "-0.003662239310465777-4.05264920233293E-4i"}, {2.51*10^14,
  "-0.003769916226571995-2.2145684579596164E-4i"}, {2.52*10^14,
  "-0.0038433889431836424-2.1631262077027855E-5i"}, {2.53*10^14,
  "-0.003881062128518195+1.8783739515669515E-4i"}, {2.54*10^14,
  "-0.00388250522422471+4.0061534949025753E-4i"}, {2.55*10^14,
  "-0.0038483662891500656+6.106092250516684E-4i"}, {2.56*10^14,
  "-0.003780257529840293+8.121319574146916E-4i"}, {2.57*10^14,
  "-0.0036806223896576444+0.001000033393841302i"}, {2.58*10^14,
  "-0.0035525929565530206+0.0011697963733597594i"}, {2.59*10^14,
  "-0.003399845006246796+0.0013176007358062021i"}}

 Профиль  
                  
 
 Re: замена символов в таблице mathematica
Сообщение01.07.2014, 22:06 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Ну ToExpression же, мы ведь уже об этом говорили.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group