Как вставить txt в маткад
Как вставить txt в маткад
БлогNot. Mathcad: как обработать файл со смешанными числовыми и строковыми данными?
Mathcad: как обработать файл со смешанными числовыми и строковыми данными?
Эти функции предназначены для работы со структурированным файлом данных, то есть, файлом, содержащим числа, расположенные по строкам и столбцам. Как частный случай, файл может содержать одну строку или один столбец с числами, то есть, быть вектор-строкой или вектор-столбцом.
В качестве практического примера решим такую задачку:
Если исходные данные сохранены в файле data.txt вида
то полный код решения выглядит так:
Результаты пишутся в файл result.txt текущей папки, вот что там вышло:
Нижний правый ноль пришлось добавить, чтобы APPENDPRN не отказывалась дописывать в файл вектор-строку со средними баллами по трём предметам.
Что в нашем решении оказалось неудобно? Прежде всего то, что студенты из списка отличаются между собой только по номерам. Можно ли сделать так, чтобы Mathcad читал нормальный текстовый файл с текстом и числами, да ещё и позволял иметь разное количество разделителей в строках и разное количество чисел в одной строке?
Функция доступна в Mathcad версии 15
Правда, при «ручной» обработке данных нам придётся проделать подготовительную работу по «чистке» и парсингу прочитанных из файла строк.
Теперь мы готовы написать функцию, которая парсит матрицу из одного столбца, содержащую записи следующего вида (файл test.txt ):
Существенно, что эту функцию не должны смущать не-число в данных Balls (в соответствующую позицию матрицы запишется ноль, см. оператор on error ) или разное количество чисел в строке (Mathcad автоматически «расширит» матрицу, заполняя свободные столбцы нулями).
Текстовый файл test.txt сохранён в кодировке Юникод (UTF-8), в этом случае мой новенький Mathcad 15 M045 прочитал символы кириллицы без проблем.
Остаётся проверить, что получилось, а дальше использовать массивы Names и Balls по своему усмотрению, например, как в предыдущей задаче.
P.S. Весь наш длинный код следует рассматривать, конечно, как учебный. Реально мы могли бы, настроив чтение функцией READCSV, решить задачу в 3 строчки кода:
Файл list.txt содержал лишние разделители, будучи таким:
Если файл сохранён из Блокнота, выбрать при сохранении кодировку Юникод или UTF-8, метка BOM Mathcad’у помешать не должна. Также функцию не смутят «недостающие» числа в данных, в нашем случае она заменит их нулями.
Импорт и экспорт данных в MathCAD
Импорт и экспорт данных в MathCAD
Продолжая публикацию избранных статей из готовящейся в издательстве «Новое знание» книги «Вычисления в MathCAD. Практическое руководство» и учитывая пожелания читателей «Компьютерной газеты», сегодня мы решили немного разобраться с таким небезынтересным с практической стороны вопросом, как взаимосвязь MathCAD и MS Excel в плане обмена данными между двумя этими системами, а также c принципами организации того же обмена, но уже в аспекте работы с обычными текстовыми ASCII-файлами.
Excel
В том случае, если вы хорошо владеете Excel, вам совершенно не обязательно осваивать многие разделы в MathCAD. К тому же, вопросы, связанные со статистической обработкой данных и всевозможными бизнес-задачами, решаются в нем гораздо проще (и возможности Excel в этих областях гораздо шире). С другой стороны, MathCAD обладает несравнимо более высоким потенциалом в сфере обработки экспериментальных данных (интерполяции, регрессии и экстраполяции), поэтому, даже если результаты ваших измерений были записаны в виде электронной таблицы, строить исходя из них графики и диаграммы все же лучше в нем.
Дело в том, что экспортировать данные из таблицы Excel в матрицу MathCAD можно просто скопировав их и вставив затем в пустую таблицу ввода. Однако провести обратную операцию (т.е. данные из матрицы MathCAD экспортировать в Excel) используя таблицу ввода (Input Table) не получится. Для выполнения этой задачи следует задействовать таблицу Excel как компонент MathCAD.
Компонентами в MathCAD называются приложения или объекты из других приложений, которые могут принимать непосредственное участие в работе создаваемого вычислительного алгоритма. Учитывая глобальность распространенности таких систем, как Excel или MatLab, возможность MathCAD осуществлять с ними согласованную работу просто неоценима, т.к. это значительно расширяет потенциал всех этих программ. Именно по этой причине создатели MathCAD посвятили целый раздел Центра Ресурсов (Extending MathCAD — подробно здесь мы его обсуждать не будем) примерам по использованию компонентов.
Для того чтобы установить один из компонентов, прежде всего вы должны открыть специальное диалоговое окно Component Wizard (Мастер компонентов). Сделать это можно при помощи команды Component (Компонент) меню Insert (Вставить) или, лучше, задействовав одноименную кнопку панели Standard (Стандартные).
В стандартной установке MathCAD компонентов совсем немного — около 10. Говорить обо всех мы не будем, а ограничимся освещением двух наиболее часто используемых. Необходимую информацию об остальных компонентах заинтересованный читатель сможет найти в справочной системе программы.
Чтобы вставить в документ MathCAD электронную таблицу Excel, выполните следующие операции:
— Запустите, задействовав соответствующую команду меню Insert (Вставить) или кнопку панели Standard (Стандартные), диалог Component Wizard (Мастер компонентов).
— В списке появившегося окна выберите строку Excel и нажмите кнопку Next (Далее).
— В открывшемся диалоговом окне Excel Setup Wizard (Мастер установки Excel) вы должны выбрать один из имеющихся параметров в зависимости от типа решаемой проблемы. Так, если вам требуется провести экспорт каких-то данных из MathCAD в Excel с целью их обработки, то активизируйте опцию Create an empty Excel worksheet (Создать пустой документ Excel). Если же вы собираетесь импортировать в MathCAD данные из существующего Excel-файла, то отметьте настройку Create from file (Создать из файла).
— Любой компонент может быть вставлен в документ MathCAD как в своем обычном виде (для Excel это будет таблица), так и в форме маленькой картинки — иконки (Icon). Никаких различий в работе с компонентом в этих двух формах не существует, поэтому выбор типа его вида должен определяться вашими предпочтениями и спецификой решаемой задачи (использование иконок позволяет значительно экономить место на документе). По умолчанию компонент вставляется в своем обычном виде. Для того чтобы представить его в форме иконки, задействуйте параметр Display as Icon (Отобразить как иконку) диалогового окна Excel Setup Wizard (Мастер установки Excel) (рис.1).
Рис.1. Иконка компонента Excel
— Когда все необходимые настройки в окне Excel Setup Wizard (Мастер установки Excel) будут сделаны, нажмите Next (Далее).
— При помощи опций появившейся второй страницы диалогового окна Excel Setup Wizard (Мастер установки Excel) вы должны определить, с какой ячейки будут читаться (или записываться) данные из документа Excel.
Практически это следует сделать с первой (A1) ячейки, так что вносить какие-либо изменения в принятые по умолчанию настройки вам почти наверняка не придется (рис.2).
Рис. 3. Работа с компонентом Excel
Рис.6. Чтение данных из текстового файла
Столь же просто, как и прочитать, вы можете записать текстовый файл, используя тот же компонент.
Кстати, при помощи компонента File Read or Write (Чтение или запись файла) вы можете считывать информацию из электронных таблиц, причем делается это даже легче, чем при использовании компонента Excel.
Компьютерная газета. Статья была опубликована в номере 02 за 2003 год в рубрике soft :: текст
Как вставить txt в маткад
13.3.1. Ввод/вывод в текстовые файлы
Перечислим встроенные функции для работы с текстовыми файлами, которые имеются в Mathcad 2001—12.
Можно задавать как полный путь к файлу, например, С:\Мои документы, так и относительный, имея в виду, что он будет отсчитываться от папки, в которой находится файл с документом Mathcad. Если вы задаете в качестве аргумента просто имя файла (как в листингах 13.16—13.17), то файл будет записан или прочитан из той папки, в которой находится сам документ Mathcad.
Примеры использования встроенных функций иллюстрируются, листингами 13.16—13.18. Результат действия листингов 13.16 и 13.18 можно понять, просмотрев получающиеся текстовые файлы, например, с помощью Блокнота Windows (рис. 13.20 и 13.21 соответственно).
Листинг 13.16. Запись матрицы в текстовый файл
Листинг 13.17. Чтение данных из текстового файла в матрицу
Листинг 13.18. Дозапись вектора k в существующий текстовый файл
Рис. 13.20. Файл, созданный листингом 13.16
Рис. 13.21. Файл, созданный листингами 13.16 и 13.18
Создание нового файла путем использования функции APPENDPRN добавлено разработчиками только в версии Mathcad 11. В прежних версиях программы попытка добавить данные к несуществующему файлу при помощи этой функции вызовет сообщение об ошибке.
Как вставить txt в маткад
200, 50 25.1256, 16E – 2, – 16.125E15
Mathcad также сохраняет данные в ASCII файлы. Файлы данных, сохранённые Mathcad, содержат числа, отделяемые пробелами и возвратами каретки. Обратите внимание: документы Mathcad сами по себе не являются файлами данных в указанном понимании. Единственный способ создать файл данных из Mathcad — использование функций доступа к файлам, описанное в этой главе.
Функции доступа к файлам
Функция | Значение |
READ( file) | Считывает значение из файла данных. Возвращает скаляр. Обычно используется следующим образом: vi :=READ( file) |
WRITE( file) | Записывает значение в файл данных. Если файл уже существует, заменяет его на новый файл. Должна использоваться в определениях следующего вида: WRITE( file) := vi |
APPEND( file) | Дописывает значение к существующему файлу. Должна использоваться в определениях следующего вида: APPEND( file) := vi |
READPRN( file) | Читает структурированный файл данных. Возвращает матрицу. Каждая строка в файле данных становится строкой в матрице. Число элементов в каждой строке должно быть одинаковым. Обычно используется следующим образом: A : = READPRN( file) |
WRITEPRN( file) | Записывает матрицу в файл данных. Каждая строка матрицы становится строкой в файле. Должна использоваться в определениях следующего вида: WRITEPRN( file) := A |
APPENDPRN( file) | Дописывает матрицу к существующему файлу. Каждая строка в матрице становится новой строкой в файле данных. Должна использоваться в определениях следующего вида: APPENDPRN( file) := A. Существующий файл должен иметь столько же столбцов, как и матрица A. |
Аргументы функций доступа к файлам
Выбор расширения зависит от функции, используемой с файловой переменной. Например, если имя файловой переменной — papageno, и используется READPRN или WRITEPRN, то Mathcad будет работать с файлом, называемом papageno.prn и находящемся в текущем каталоге. Если же использовать READ либо WRITE, Mathcad будет работать с файлом, называемым papageno.dat и находящемся в текущем каталоге.
Если файл, с которым нужно работать, размещен в каталоге ином, нежели каталог по умолчанию, нельзя просто напечатать полный путь к файлу между круглыми скобками одной из функций доступа. Дело в том, что функция доступа есть математическое выражение, и в результате Mathcad истолковывает нажатие клавиш \ или : при попытке указать символ дисковода или каталог как указание создать квадратный корень или оператор определения.
Чтобы обойти эту трудность, Mathcad позволяет присвоить имя файла файловой переменной подобно тому, как число присваивается обычной переменной. Эта возможность обсуждена в следующем разделе.
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Как вставить txt в маткад
В этом разделе обсуждается использование функций READPRN, WRITEPRN и APPENDPRN для работы со структурированными файлами. Структурированный файл данных — файл с фиксированным числом значений на строке. Например, если экспортировать прямоугольную область из электронной таблицы в текстовый файл, возникающие в результате строки и столбцы чисел сформируют структурированный файл.
Считывание матрицы с помощью функции READPRN
Предположим, что имеется ASCII-файл, содержащий данные, показанные ниже. Эти данные могут быть взяты из электронной таблицы или из любого другого источника.
Рисунок 4 показывает документ Mathcad, который считывает эти данные в матрицу.
Функция READPRN читает весь файл данных, определяет число строк и столбцов, и создает матрицу из этих данных.
Предупреждение: Каждая строка в файле данных должна содержать одинаковое число значений. Если оставить промежутки там, где Mathcad ожидает значение, функция READPRN не сможет прочитать файл. Mathcad определяет конец одного и начало следующего значения, ища пробелы или запятые.
Иногда каждый столбец значений в файле данных представляет отдельную переменную. Рисунок 5 показывает, как использовать верхние индексы, чтобы создать вектор из каждого столбца в файле данных.
Рисунок 4: Считывание таблицы данных в матрицу.
Рисунок 5: Присваивание различным переменным значений из разных столбцов в файле данных.
Рисунок 6: Запись данных в структурированный файл данных.
Запись данных при помощи функций WRITEPRN и APPENDPRN
Рисунок 6 показывает, как использовать функцию WRITEPRN, чтобы записать данные в структурированный файл данных.
Когда Mathcad обрабатывает документ из Рисунка 6, создается файл данных, содержащий следующие значения:
В отличие от WRITE функция WRITEPRN записывает данные в виде столбцов. Обратите внимание, что, поскольку для PRNPRECISION установлено значение четыре, числа записаны с четырьмя знаками после запятой. Поскольку значение PRNCOLWIDTH равно восьми, каждый столбец имеет ширину в восемь символов. Так как PRNPRECISION и PRNCOLWIDTH могут изменяться независимо, нужно не упустить из виду, что ширина столбца должна быть такой, чтобы разместились все необходимые цифры вместе с пробелом, разделяющим отдельные значения.
Рисунок 7: Документ, который создаёт файл данных со столбцами шириной в 10 символов, содержащий числа с 5 значащими цифрами.
Используя функцию augment, можно объединять отдельные переменные в массивы, и записывать их все в файл данных. Рисунок 8 показывает, как это делать.
Рисунок 8: Запись нескольких векторов, объединённых вместе.
Преимущества использования READPRN и WRITEPRN
Использование READPRN, как правило, предпочтительнее использования READ. Когда данные структурированы в столбцы, READPRN переводит данные в Mathcad в легкодоступной форме.
Если некоторые строки в файле данных имеют большее количество значений, чем другие, данные могут быть потеряны. Используйте текстовый редактор, чтобы заменить пропущенные значения на нули перед использованием READPRN.
Функция READ используется для файлов, в которых значения одной переменной разбросаны по нескольким строкам. Таковы файлы, созданные WRITE, которая располагает столько чисел на строке, сколько строка может вместить.
Помните: используйте нижний индекс, являющийся дискретным аргументом, чтобы читать с помощью READ; не используйте нижний индекс, чтобы читать с помощью READPRN.
Обычно WRITEPRN производит более читаемые файлы, чем WRITE, поскольку данные в них аккуратно расположены в строках и столбцах. С другой стороны, WRITE производит меньшие файлы, чем WRITEPRN, потому что ей не нужно добавлять пробелы для выравнивания данных.
Используйте WRITE вместо WRITEPRN, когда требуется напихать так много значений, сколько возможно, в малый файл данных.
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter