Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 32
Рейтинг: 0
#16: 2021-03-31 12:21:52 ЛС | профиль | цитата
Интересно, а личка вообще работает?
Посмотрел историю - на все мои письма в разное время - ни одного ответа
карма: 0

0
Ответов: 2059
Рейтинг: 131
#17: 2021-03-31 13:21:35 ЛС | профиль | цитата
konsys писал(а):
Интересно, а личка вообще работает?

Работает, просто пишешь не тому. У меня-то Яндекс диск работает.
flash1103 писал
скачать с яндекса ничего не могу
мож т.с. скинет мне в личку тех задание.

а не я.
Я захожу сюда редко, могу и через неделю прочитать сообщение.
карма: 6

0
Ответов: 32
Рейтинг: 0
#18: 2021-03-31 14:13:42 ЛС | профиль | цитата
flash1103 писал(а):
Ну да это все понятно,график понятно,я споткнулся о слова топикстартера что прога должна корелляцию искать,а здесь относительно чего искать?относительно потолка?скачать с яндекса ничего не могу
мож т.с. скинет мне в личку тех задание.

Кинул ссылку в личку
карма: 0

0
Ответов: 32
Рейтинг: 0
#19: 2021-03-31 15:58:34 ЛС | профиль | цитата
Нашел вот такую штуку для вычисления корреляции

Add(IntegerArray,1369151,889,238)
{
IntArray=['0'=3,'1'=2,'2'=4,'3'=5,'4'=6]
}
Add(IntegerArray,7105367,973,238)
{
IntArray=['0'=9,'1'=7,'2'=12,'3'=15,'4'=17]
}
Add(Button,794109,812,322)
{
Left=65
Top=410
Width=75
Caption="Расчитать"
link(onClick,7364257:doEvent1,[])
}
Add(Edit,10779859,938,322)
{
Left=190
Top=400
Width=140
Text=""
}
Add(InlineCode,2865515,889,322)
{
WorkPoints=#53:doCorrelation=Подсчет корреляции между двумя масивами|
EventPoints=#46:onCorrelation=Резултат вычисления (Корреляция)|
VarPoints=#22:Correlation=Корреляция|21:Covariance=Ковариация|36:sig1=Стандартное отклонение масива 1|36:sig2=Стандартное отклонение масива 2|
DataPoints=#137:Array1=1-й массив для подсчета корреляции. Количество элементов подсчета выбирается по меньшему количеству элементов из Array1 и Array2. |136:Array2=2-й массив для подсчета корреляции. Количество элементов подсчета выбирается по меньшему количеству элементов из Array1 и Array2.|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|28: ArrIn1, ArrIn2: PArray;|27: cov, r, sx, sy : real;|9: public|0:|30: onCorrelation: THI_Event;|23: Array1: THI_Event;|23: Array2: THI_Event;|57: procedure doCorrelation(var Data:TData; Index:word);|55: procedure Correlation(var Data:TData; index:word);|54: procedure Covariance(var Data:TData; index:word);|48: procedure sig1(var Data:TData; index:word);|48: procedure sig2(var Data:TData; index:word);|0:|5: end;|0:|14:implementation|0:|36:procedure THiAsmClass.doCorrelation;|3:var|23: dx, dy, s1, s2: real;|16: i, n: integer;|23: ind, dt1, dt2: TData;|5:begin|31: ArrIn1 := ReadArray(Array1);|54: if (ArrIn1 = nil) or (ArrIn1._Count = 0) then exit;|31: ArrIn2 := ReadArray(Array2);|54: if (ArrIn2 = nil) or (ArrIn2._Count = 0) then exit;|79: if ArrIn1._Count>ArrIn2._Count then n:=ArrIn2._Count else n:=ArrIn1._Count;|11: s1 := 0;|11: s2 := 0;|23: for i := 0 to n-1 do|8: begin|23: Ind := _DoData(i);|27: ArrIn1._Get(Ind, dt1);|28: s1 := s1 + ToReal(dt1);|27: ArrIn2._Get(Ind, dt2);|28: s2 := s2 + ToReal(dt2);|7: end;|12: s1:=s1/n;|12: s2:=s2/n;|9: sx:=0;|9: sy:=0;|10: cov:=0;|23: for i := 0 to n-1 do|8: begin|23: Ind := _DoData(i);|27: ArrIn1._Get(Ind, dt1);|27: ArrIn2._Get(Ind, dt2);|48: cov:=cov+(ToReal(dt1)-s1)*(ToReal(dt2)-s2);|36: sx := sx + sqr(ToReal(dt1)-s1);|36: sy := sy + sqr(ToReal(dt2)-s2);|7: end;|22: r:=cov/sqrt(sx*sy);|32: _hi_onEvent(onCorrelation, r);|4:end;|0:|61:procedure THiAsmClass.Covariance(var Data:TData; index:word);|5:begin|20: dtReal(Data, cov);|4:end;|0:|62:procedure THiAsmClass.Correlation(var Data:TData; index:word);|5:begin|18: dtReal(Data, r);|4:end;|0:|55:procedure THiAsmClass.sig1(var Data:TData; index:word);|5:begin|19: dtReal(Data, sx);|4:end;|0:|55:procedure THiAsmClass.sig2(var Data:TData; index:word);|5:begin|19: dtReal(Data, sy);|4:end;|0:|4:end.|
link(onCorrelation,10779859:doText,[])
link(Array1,1369151:Array,[])
link(Array2,7105367:Array,[(902,296)(979,296)])
}
Add(Edit,9353038,938,483)
{
Left=510
Top=400
Width=140
Text=""
link(Str,2865515:Covariance,[(944,419)(902,419)])
}
Add(Hub,7364257,854,322)
{
OutCount=5
link(onEvent1,2865515:doCorrelation,[])
link(onEvent2,6682233:doText,[(885,335)(885,712)])
link(onEvent3,9353038:doText,[(882,342)(882,489)])
link(onEvent4,13153538:doText,[(877,349)(877,536)])
link(onEvent5,10804726:doText,[(872,356)(872,577)])
}
Add(Edit,13153538,987,530)
{
Left=670
Top=405
Width=140
Text=""
link(Str,2865515:sig1,[(993,442)(909,442)])
}
Add(Edit,10804726,1141,571)
{
Left=835
Top=405
Width=140
Text=""
link(Str,2865515:sig2,[(1147,463)(916,463)])
}
Add(Edit,6682233,889,706)
{
Left=345
Top=400
Width=140
Text=""
link(Str,2865515:Correlation,[])
}




как теперь ее прикрутить к


Add(Plotter,11338811,392,154)
{
Top=55
Width=1071
Height=279
Name="g1"
Point(doAlign)
}
Add(PlotPoints,13221991,665,252)
{
Grapher="g1"
Name="test"
link(ValueY,2324210:Part1,[])
link(ValueX,2324210:Part2,[])
}
Add(DropFile,11451715,483,140)
{
link(onDropFile,6160664:doWork1,[(536,146)])
}
Add(SearchInFile,8226956,546,189)
{
link(onSearch,2308162:doEvent1,[])
}
Add(MultiStrPart,2324210,665,196)
{
Direct=1
}
Add(Hub,2308162,602,196)
{
link(onEvent1,2324210:doSplit,[])
link(onEvent2,13221991:doAdd,[(655,209)(655,258)])
}
Add(HubEx,6160664,532,189)
{
link(onEvent,8226956:doSearch,[])
}
Add(ODialog,8954181,483,189)
{
link(onExecute,6160664:doWork2,[])
}
Add(Button,988860,392,224)
{
Left=40
Top=5
Width=160
Height=35
Caption="Загрузить таблицу"
link(onClick,8954181:doExecute,[(454,230)(454,195)])
}

карма: 0

0
Ответов: 32
Рейтинг: 0
#20: 2021-03-31 17:25:07 ЛС | профиль | цитата
Часть 1 работает часть 2 получится так реализовать?

скрипт корреляции взял из кода выше


карма: 0

0
Ответов: 8887
Рейтинг: 823
#21: 2021-03-31 18:53:59 ЛС | профиль | цитата
konsys, попробуйте, здесь схема, ЕХЕ и пара элементов, которых у вас может и не быть.
https://forum.hiasm.com/getfile/39223
Ваш 3ВX-КД-пример.txt из ~133500 строк -- входной график и график разложения Фурье мой компьютер (Win10, 4 ядра, 3.2 ГГц) строит 15 сек, график корреляции по всем точкам 45 сек.
На второй пример из 2880000 строк терпения у меня не хватило
карма: 19

0
Ответов: 32
Рейтинг: 0
#22: 2021-03-31 20:21:32 ЛС | профиль | цитата
Леонид писал(а):
konsys, попробуйте, здесь схема, ЕХЕ и пара элементов, которых у вас может и не быть.
https://forum.hiasm.com/getfile/39223
Ваш 3ВX-КД-пример.txt из ~133500 строк -- входной график и график разложения Фурье мой компьютер (Win10, 4 ядра, 3.2 ГГц) строит 15 сек, график корреляции по всем точкам 45 сек.
На второй пример из 2880000 строк терпения у меня не хватило

Спасибо что помогаете Леонид.
проверил работу EXE на файле 3ВX-КД-пример.txt - работает и график и спектр и корреляция

Создал новый файл ТХТ (из csv) 30000 строк

График по алгоритму GUNTA входящий файл CSV

График по алгоритму Леонида входящий файл TXT

Спектр работает

Корреляция - вылетает


Можно ли сразу адаптировать под загрузку CSV файла?
Аржив с TXT и CSV https://garkon.ru/proba.zip
карма: 0

0
Ответов: 165
Рейтинг: 7
#23: 2021-04-01 13:07:15 ЛС | профиль | цитата
Привет Всем,Привет Флинт,я захожу с пк тоже не часто,с телефона чаще вижу скинули почитаю
карма: 1

0
Ответов: 8887
Рейтинг: 823
#24: 2021-04-01 13:07:44 ЛС | профиль | цитата
konsys, эти CSV файлы вполне открываются и в блокноте и в HiAsm без всякой обработки, причём с разделителем ";" (точка с запятой), поэтому и в выложенных программах надо удалить все пред-обработки строк
схема


Add(MainForm,2953706,406,259)
{
Width=460
}
Add(Button,13460188,126,126)
{
Left=5
Top=10
Caption="Откр.csv"
link(onClick,1875473:doExecute,[])
}
Add(StrList,11651192,287,77)
{
}
Add(ODialog,1875473,175,126)
{
Filter="CSV|*.csv"
link(onExecute,14310018:doEvent1,[])
}
Add(ListBox,16179935,385,196)
{
Left=250
Top=5
Width=180
Height=250
}
Add(ArrayEnum,15303727,301,147)
{
link(onItem,8338267:doAdd,[])
link(onEndEnum,16353971:doString,[(340,160)(340,265)])
link(Array,11651192:Array,[])
}
Add(Hub,14310018,217,126)
{
OutCount=4
link(onEvent1,11651192:doLoad,[(242,132)(242,111)])
link(onEvent2,8338267:doClear,[(353,139)(353,160)])
link(onEvent3,5376246:doData,[(242,146)(242,202)])
link(onEvent4,4610137:doStart,[])
}
Add(DoData,5376246,287,196)
{
link(onEventData,16179935:doText,[(334,202)(334,223)])
link(Data,11651192:Text,[])
}
Add(StringTable,8338267,371,147)
{
Left=65
Top=5
Width=180
Height=250
Columns=#8:Время=75|9:Данные=75|
}
Add(Thread,4610137,252,147)
{
Delay=2
FastStop=0
link(onExec,15303727:doEnum,[])
}
Add(FormatStr,16353971,357,259)
{
DataCount=3
Mask="%1 %2 %3"
link(onFString,2953706:doCaption,[])
link(Str1,11651192:Count,[(363,131)(300,131)])
link(Str2,8338267:Count,[(370,194)(377,194)])
link(Str3,16179935:Count,[(377,236)(398,236)])
}

Вчера выложил схему без особой проверки, попробую выяснить причину.
Всё равно вызывает сомнение правильность понимания вами поставленной задачи в части корреляции:
ТЗ.docx писал(а):
2.2. Говоря простым языком, берется файл сигнала (сигнал представлен в цифровом виде) в формате *.txt. Далее происходит симуляция помех воздействующих на этот сигнал и должен быть выведен отдельный график «Сигнал с помехами». Затем по вышесказанному методу в пункте (2.1.) (корреляция), необходимо распознать из «Сигнала с помехами» исходный сигнал и вывести отдельный график «Сигнал без помех».

карма: 19

0
Ответов: 165
Рейтинг: 7
#25: 2021-04-01 13:29:56 ЛС | профиль | цитата
Мне то-же пока не ясно,слова вроде бы понятны а смысл ускользает,по csv первый параметр время в формате пк-шном single наверное и надо типа shortdate2timestr
что то типа
карма: 1

0
Ответов: 32
Рейтинг: 0
#26: 2021-04-01 14:07:42 ЛС | профиль | цитата
ТЗ сократилось до такого вида


Леонид практически его реализовал.

Создал несколько ТХТ и все равно корреляция не считается.
По этому лучше сделать загрузку CSV ибо он всегда одинаков по структуре

--- Добавлено в 2021-04-01 14:15:12

Леонид писал(а):
Всё равно вызывает сомнение правильность понимания вами поставленной задачи в части корреляции:

Пример корреляции в этом файле https://garkon.ru/korrelyaciya.zip


корреляцию читал на форуме тут https://forum.hiasm.com/topic/57744

сам код от miver https://forum.hiasm.com/getfile/24739

Редактировалось 3 раз(а), последний 2021-04-01 14:23:16
карма: 0

0
Ответов: 165
Рейтинг: 7
#27: 2021-04-01 17:53:00 ЛС | профиль | цитата
Для приведения точки Х к нормальному виду только надо опорное время правильно поставить
Схема


Add(MainForm,2953706,21,105)
{
Caption="Ввести опорную дату"
link(onCreate,8943765:doData,[(60,125)(60,90)])
}
Add(SearchInFile,11815953,208,140)
{
FileName="1.csv"
Text="%"
Point(onEnd)
link(onNotSearch,11975759:doEvent1,[(247,146)(247,118)])
link(FileName,13910252:Var3,[(214,131)(256,131)(256,215)])
}
Add(ConvertorEx,7743791,348,175)
{
Mode=10
link(Data,14392614:Left,[(354,166)(347,166)])
}
Add(DateConvertor,16361128,600,126)
{
Mode=9
Point(Data)
link(onResult,2793692:doText,[])
}
Add(Label,5988216,509,126)
{
Left=10
Top=65
Width=110
Height=35
Color=-16777203
AutoSize=1
Alignment=2
}
Add(StrPart,14392614,341,112)
{
Char=";"
DirectEvent=0
Point(Left)
Point(Right)
link(onSplit,16464175:doValue,[(380,118)(380,76)])
link(onPart,295624:doData,[(380,125)(380,120)])
}
Add(Label,334146,506,200)
{
Left=10
Top=115
Width=110
Height=35
Color=15780518
AutoSize=1
Alignment=2
}
Add(Hub,11975759,264,112)
{
OutCount=4
link(onEvent1,14392614:doSplit,[])
link(onEvent2,7743791:doConvert,[(306,125)(306,181)])
link(onEvent3,5456403:doOperation,[(289,132)(289,293)])
link(onEvent4,11256710:doString,[(284,139)(284,328)(354,328)(354,300)])
}
Add(Time,15380213,194,35)
{
Point(DateTime)
}
Add(GlobalVar,5073656,707,35)
{
Name="DateTime"
Data=Real(0)
link(onValue,2455166:doEvent1,[(872,41)(872,20)(74,20)(74,125)])
}
Add(DoData,8943765,194,84)
{
link(onEventData,15776242:doConvert,[(340,90)(340,41)])
link(Data,15380213:DateTime,[(200,75)(207,75)])
}
Add(Hub,2455166,83,119)
{
OutCount=6
link(onEvent3,2448562:doExecute,[(163,139)(163,202)])
link(onEvent4,2600314:doExecute,[(158,146)(158,342)])
link(onEvent5,11815953:doSearch,[(172,153)(172,146)])
link(onEvent6,15195655:doEvent1,[(142,160)(142,370)])
}
Add(GlobalVar,7193322,299,238)
{
Name="DateTime"
Data=Real(0)
}
Add(DateConvertor,15776242,373,35)
{
Mode=9
Point(Data)
link(onResult,12357847:doWork2,[])
}
Add(Math,5456403,313,287)
{
link(onResult,4714361:doEvent1,[(387,293)(387,206)])
link(Op1,7193322:Var,[(319,278)(305,278)])
link(Op2,7743791:Var,[(326,215)(354,215)])
}
Add(DoData,295624,411,114)
{
link(onEventData,7957367:doEvent1,[(450,120)(450,132)])
link(Data,5073656:Var,[(417,103)(713,103)])
}
Add(Label,2793692,723,127)
{
Left=225
Top=65
Width=110
Height=35
Color=-16777203
AutoSize=1
Alignment=2
}
Add(Label,12020630,720,201)
{
Left=225
Top=115
Width=110
Height=35
Color=15780518
AutoSize=1
Alignment=2
}
Add(DateConvertor,1685214,604,200)
{
Mode=9
Format="dd.MM.yyyy HH:mm:ss"
Point(Data)
link(onResult,12020630:doText,[])
}
Add(Hub,7957367,460,126)
{
OutCount=3
link(onEvent1,5988216:doText,[])
link(onEvent2,16361128:doConvert,[(499,139)(499,167)(548,167)(548,132)])
}
Add(Hub,4714361,453,200)
{
OutCount=3
link(onEvent1,334146:doText,[])
link(onEvent2,1685214:doConvert,[(499,213)(499,237)(541,237)(541,206)])
}
Add(FormatStr,11256710,726,294)
{
Mask="%1;%2"
link(onFString,7629677:doEvent1,[])
link(Str1,376975:Var2,[])
link(Str2,1470505:Var,[])
}
Add(GlobalVar,16464175,537,70)
{
Name="Value"
Data=Real(0)
}
Add(SDialog,2600314,257,336)
{
Filter="All|*.csv"
Point(FileName)
Point(doFileName)
link(onExecute,13848136:doValue,[])
link(FileName,3878292:Text,[(263,327)(235,327)])
}
Add(ODialog,2448562,168,196)
{
Filter="All|*.csv"
link(onExecute,12897779:doValue,[])
}
Add(GlobalVar,12897779,215,196)
{
Name="LFile"
Data=String()
}
Add(VisualStrings,3878292,229,273)
{
Lines=#3:New|
}
Add(GetDataEx,13910252,222,210)
{
Angle=3
link(Data,12897779:Var,[(221,215)])
}
Add(GlobalVar,13848136,355,336)
{
Name="SFile"
}
Add(GetDataEx,376975,726,238)
{
Angle=3
link(Data,12020630:Caption,[(726,243)])
}
Add(LineBreak,463100,537,98)
{
Type=1
link(Data,16464175:Var,[])
Primary=[1470505,196,168]
}
Add(StrList,2637451,840,301)
{
Point(doSave)
link(FileName,10859931:Var,[(853,257)(858,257)])
}
Add(GlobalVar,10859931,852,238)
{
Name="SFile"
}
Add(Hub,7629677,770,294)
{
link(onEvent1,2637451:doAdd,[(830,300)(830,307)])
}
Add(Edit,4199674,504,28)
{
Left=45
Top=20
Width=260
Alignment=2
ClearAfterEnter=1
link(onEnter,8190535:doConvert,[(610,41)(610,46)])
}
Add(DateConvertor,8190535,613,40)
{
Mode=8
Point(Data)
link(onResult,5073656:doValue,[(655,46)(655,41)])
}
Add(Hub,15195655,154,364)
{
link(onEvent1,2637451:doSave,[(536,370)(536,335)])
link(onEvent2,9495696:doData,[(249,377)(249,454)])
}
Add(DoData,9495696,266,448)
{
link(onEventData,628463:doEvent,[])
link(Data,15468400:Text,[(272,439)(265,439)])
}
Add(VisualStrings,15468400,259,413)
{
Lines=#5:конец|
}
Add(HubEx,12357847,462,35)
{
link(onEvent,4199674:doText2,[])
}
Add(Debug,628463,378,448)
{
link(onEvent,12357847:doWork3,[(403,454)(403,97)(466,97)])
}

здесь используется относительное чего то,шаг выборки~ 15минут
а потом нарезать посуточно/посменно/повахтенно может чего и увидите на графике, ато что там можно разглядеть при 30000 точек
и коррелировать надо в диапазоне а не всю массу хотя хз что за цель преследуется,частотный спектр при свертке надо в окне времени а не
весь период слушать
карма: 1

0
Ответов: 32
Рейтинг: 0
#28: 2021-04-01 19:32:53 ЛС | профиль | цитата
flash1103 писал(а):
Для приведения точки Х к нормальному виду только надо опорное время правильно поставить
Схема

flash1103 , что это за элемент? красным овалом обвел..


Редактировалось 1 раз(а), последний 2021-04-01 19:33:11
карма: 0

0
Ответов: 2059
Рейтинг: 131
#29: 2021-04-01 20:13:43 ЛС | профиль | цитата
konsys писал(а):
что это за элемент? красным овалом обвел..

https://forum.hiasm.com/getfile/39224
карма: 6

0
Ответов: 165
Рейтинг: 7
#30: 2021-04-01 20:48:51 ЛС | профиль | цитата
Флинт опередил,конвертор одной величины в другую.в пк системное время имеет формат real32 и начинает отсчет если память не изменяет 1900 года.
Млин на паскале все это уложил бы в 10 строк а тут кучу кубиков нагородил..
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)