- •Таганрог 2007
- •Содержание
- •Введение
- •Глава 1. Проблема математического сопровождения психологического исследования
- •1.1. Экспериментальная психология как набор инструментов и принципов психологического исследования
- •1.2. Математическое обеспечение психологического исследования
- •1.3. Обзор существующих аналогов
- •1.4. Выводы
- •Глава 2. Проектирование информационной системы
- •2.1. Постановка технического задания
- •2.2. Используемые программные технологии
- •2.3. Архитектурное проектирование программного средства
- •2.4. Обоснование выбора средств разработки
- •2.5. Проектирование интерфейсов
- •2.5.1. Проектирование внутренних интерфейсов
- •2.5.2. Проектирование пользовательского интерфейса
- •2.6. Реализация и эксплуатация программного средства
- •2.7. Модернизация программного средства
- •Глава 3. Безопасность и экологичность проекта
- •3.1. Анализ безопасности
- •3.1.1. Описание трудового процесса при использовании программного средства
- •3.1.2. Анализ и оценка напряженности трудового процесса пользователя
- •3.1.3. Разработка защитных и профилактических мероприятий
- •3.1.4. Анализ надежности программного средства на этапе эксплуатации
- •3.2. Анализ экологичности
- •Глава 4. Экономическое обоснование проекта
- •4.1. Актуальность разработки
- •4.2. Расчет затрат на разработку программного средства
- •4.3. Расчет капитальных вложений
- •4.4. Расчет и сопоставление эксплуатационных расходов
- •4.5. Сводные экономические показатели по разработке программы
- •Заключение
- •Список использованных источников
- •Приложение а Анкета для выявления предпочитаемых математических методов, используемых в психологических исследованиях
- •Приложение б Частота использования различных математических методов в психологических исследованиях
- •Последовательность действий для получения алгоритмов математических процедур из моделей Simulink
- •Для создания кода на языке Си соответствующего построенной модели, нужно установить необходимые параметры моделирования среды Simulink.
- •Приложение г Пример работы с Dll, содержащей математическую процедуру обработки данных
- •Приложение д
- •Приложение е Последовательность действий для создания эталонных файлов, применяемых для верификации алгоритмов математических процедур в создаваемых программой кмс Dll
Приложение г Пример работы с Dll, содержащей математическую процедуру обработки данных
Пример написан на языке С++. В качестве примера показан файл с именем Test.cpp. Dll имеет 3 входа (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]) и 3 выхода (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]). Все передаваемые значения имеют тип double.
#include "system.h" //Файл с виртуальным классом System
typedef BOOL (__stdcall* LPFNCREATE)(System **);
typedef void (__stdcall* LPFNDESTROY)(System *);
void main()
{
LPFNCREATE CreateSystem = 0;
LPFNDESTROY DestroySystem = 0;
HINSTANCE hDLL;
hDLL = LoadLibrary("Test"); //Загрузка Dll
if (!hDLL)
{
cout << "Cannot load library"<<endl;
return 0;
}
//Подключение функций
CreateSystem = (LPFNCREATE)GetProcAddress(hDLL,"CreateSystem");
DestroySystem = (LPFNDSTROY)GetProcAddress(hDLL,"DestroySystem");
if (!CreateSystem)
{
cout << "Cannot get CreateSystem pinter"<<endl;
FreeLibrary(hDLL);
return 0;
}
if (!DestroySystem)
{
cout << "Cannot get DestroySystem printer"<<endl;
FreeLibrary(hDLL);
return 0;
}
System *psys=0;
BOOL res = CreateSystem(&psys); //Создание класса System
if (!res)
cout <<"cannot create system!"<<endl;
rtS st;
rtS st2;
char *InfoName;
char *ModelInfo;
psys->ModelName(&InfoName); //Получение имени Dll
cout<< InfoName <<endl;
psys->ModelInfo(&ModelInfo); //Получение информации о модели
cout<< ModelInfo<<"\n"<<endl;
int ni;
int no;
psys->GetNumberInput(&ni); //Получение количества входов
psys->GetNumberOutput(&no); //Получение количества выходов
cout<<"Input"<<" "<<ni <<endl;
cout<<"Output"<<" "<<no <<endl;
psys->GetInputInfo(1, &st); //Параметры 1-го входа
psys->GetOutputInfo(1, &st2); //Параметры 1-го выхода
psys->Initialize(); //Инициализация модели
double Out1; //Скаляр
double Out2[3]; //Вектор
double Out3[4*2]; //Матрица
double In1[3] [1] = {2,2,2};
double In2[3] [3] = {{1,2,3},{4,5,6},{7,8,9}};
double In3[3] [8] = {{2,3,3,4,1,5,2,6}, {11,12,13,14,15,16,17,18}, {21,22,23,24,25,26,27,28}};
LPVOID Op[3];
LPVOID Lp[3];
for (int i=0; i<3; i++)
{
Lp[0] = (LPVOID)&In1[i];
Lp[1] = (LPVOID)&In2[i];
Lp[2] = (LPVOID)&In3[i];
Op[0] = (LPVOID)&Out1;
Op[1] = (LPVOID)&Out2[0];
Op[2] = (LPVOID)&Out3[0];
psys->Operate(&Lp[0],&Op[0]);
}
psys->UnInitialize();
DestroySystem(psys);
FreeLibrary(hDLL);
}
Приложение д
Приложение е Последовательность действий для создания эталонных файлов, применяемых для верификации алгоритмов математических процедур в создаваемых программой кмс Dll
Для верификации Dll нужно создать набор тестовых файлов. Они используются программой для сравнения данных, получаемых при работе математической процедуры в Simulink и при работе этой же процедуры в Dll. Результатом работы программы ТМС является сообщение о том, правильно или неправильно работает алгоритм в Dll.
Для создания эталонных файлов необходимо построить тестовую модель. Тестовая модель создается из исходной модели путем изменения параметров модели Simulink:
-
к каждому блоку внешнего источника сигнала In1 подключается блок From Workspace из библиотеки Simulink/Sourses. Имя каждого блока From Workspace должно совпадать с именем блока In1, к которому он подключен;
-
в качестве источников сигналов вместо блоков In1 из Simulink/Ports & Subsystems используется любой блок источника дискретных сигналов из библиотеки Simulink/Sourses;
-
в качестве блока приемников сигналов вместо блоков Out1 из Simulink/Ports & Subsystems используется блок From Workspace из библиотеки Simulink/Sourses. Имя каждого блока From Workspace должно совпадать с именем блока Out1, вместо которого он подключен;
-
в параметрах всех блоков From Workspace в выпадающем списке Save format должно быть установлено значение Array.
Примеры исходной и тестовой моделей приведены на рисунках Е.1 и Е.2.
Рисунок Е.1 – Исходная модель
Рисунок Е.2 – Тестовая модель
После того, как тестовая модель была построена, ее нужно запустить на выполнение. В результате работы модели в рабочем пространстве Matlab (Workspace) будут созданы переменные с именами, соответствующими именам источников и приемников сигналов. После этого в командном окне (Command window) нужно ввести переменные varIn и varOut, значения которых должны быть равны количеству входных и выходных сигналов соответственно (в примерах на рисунках 5 и 6 varIn=3 и varOut=3). Затем нужно запустить на выполнение файл Save_signal.m командой run Save_signal в командном окне Matlab.
В результате в текущей директории Matlab будут созданы тестовые файлы для Dll. Количество файлов равно количеству входных и выходных сигналов в Dll, а имена совпадают с именами входных (In1.kcm, In2.kcm,…) и выходных (Out1.kcm, Out2.kcm,…) сигналов.
Тестовые файлы с расширением kcm записываются в бинарном виде и имеют следующую структуру:
-
идентификатор "Input_signal" для файлов In и "Output_signal" для файлов Out (тип char). Идентификатор занимает 12 байт для файлов In и 13 байт для файлов Out;
-
размер заголовка (тип double) – 8 байт;
-
версия тестового файла (тип double) – 8 байт;
-
количество данных в файле (тип double) – 8 байт;
-
формат сигнала (тип double) – 8 байт;
-
размерность, число строк (тип double) – 8 байт;
-
размерность, число столбцов (тип double) – 8 байт;
-
тип элементов данных (тип double) – 8 байт;
-
шаг моделирования (тип double) – 8 байт;
-
записываемые данные.
Таким образом, получаемые файлы используются для верификации алгоритма математической обработки данных, содержащегося в Dll.
1 Программное средство – объект, состоящий из программ, процедур, правил, а также, если предусмотрено, сопутствующих им документации и данных, относящихся к функционированию системы обработки информации (ГОСТ 28806-90).
1 Получаемые значения могут называться «наблюдениями», «наблюдаемыми значениями», «индивидуальными показателями» и т.д.
1 dynamic-link library – динамически компонуемая библиотека
1 Будем различать психолога создающего математические процедуры (проектировщик системы) и психолога, использующего уже готовые математические процедуры (пользователь системы).
1 Эти программы необходимы для создания Dll с алгоритмами математической обработки данных, при использовании уже созданных Dll эти программы не требуются