This commit is contained in:
pavanvpatil 2022-10-24 20:30:30 +05:30
parent 2ff209a38b
commit 658e423553
8 changed files with 29770 additions and 6 deletions

View File

@ -57,7 +57,7 @@ CLEAN_OBJECTS = $(wildcard bin/*.o) $(PROGRAM)
all: $(PROGRAM) all: $(PROGRAM)
$(PROGRAM): $(OBJECT_FILES) $(PROGRAM): $(OBJECT_FILES)
$(CC) $(CFLAGS) $(OBJECT_FILES) -o $(PROGRAM) $(LDLIBS) $(CC) $(CFLAGS) $(OBJECT_FILES) -o $(PROGRAM) $(LDLIBS) -lm
bin/%.o: src/%.c bin/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@ $(CC) $(CFLAGS) -c $< -o $@

View File

@ -0,0 +1,4 @@
/*pavan changes*/
void DTWdistance(struct data_frame *df,gboolean *result);

22
iPDC/plot_kmeans1.py Normal file
View File

@ -0,0 +1,22 @@
import csv
import pandas as pd
import matplotlib.pyplot as plt
x=[]
y=[]
x1=[]
y1=[]
with open('points.csv', mode ='r') as file:
csvFile = csv.reader(file)
for lines in csvFile:
print(lines)
x.append(float(lines[0]))
y.append(0)
x1.append(float(lines[2]))
y1.append(0)
plt.scatter(x, y)
plt.scatter(x1, y1)
plt.show()

29643
iPDC/points.csv Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
#include "parser.h"
#include <stdio.h>
#include <math.h>
#include <gtk/gtk.h>
#include <stdlib.h>
long double *freq1;
long double *freq2;
int count_track1=0;
int count_track2=0;
int flag=0;
void DTWdistance(struct data_frame *df,gboolean *result)
{
float CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq)*1e-3;
//printf("count1: %d\ncount2: %d\n",count_track1,count_track2);
//printf("curr_freq: %f\n",CURR_FREQ);
if(count_track1==0)
{
if(flag==0)
{
flag=1;
freq1 = (long double *)malloc(500 * sizeof(long double));
}
freq1[count_track2]=CURR_FREQ;
count_track2++;
if(count_track2==500)
{
count_track2=0;
flag=0;
count_track1++;
}
}
else if(count_track1==1)
{
if(flag==0)
{
flag=1;
freq2 = (long double *)malloc(500 * sizeof(long double));
}
freq2[count_track2]=CURR_FREQ;
count_track2++;
if(count_track2==500)
{
count_track2=0;
flag=0;
count_track1++;
}
}
else
{
float** DTW = (float**)malloc(501 * sizeof(float*));
for (int i = 0; i < 501; i++)
DTW[i] = (float*)malloc(501 * sizeof(float));
for(int i=0;i<501;i++)
{
for(int j=0;j<501;j++)
DTW[i][j]=1000;
}
DTW[0][0]=0;
for(int i=1;i<501;i++)
{
for(int j=1;j<501;j++)
{
float cost=fabs(freq1[i-1]-freq2[j-1]);
//printf("cost: %f",cost);
DTW[i][j]=cost+fmin(DTW[i][j-1],fmin(DTW[i-1][j],DTW[i-1][j-1]));
//printf(" DTW[%d][%d]: %f\n",i,j,DTW[i][j]);
}
}
printf("DTWdistance: %f\n",DTW[500][500]);
if(DTW[500][500]>=35) *result=false;
else *result=true;
free(freq1);
free(freq2);
free(DTW);
count_track1=0;
}
}

View File

@ -2,16 +2,22 @@
#include "parser.h" #include "parser.h"
#include <stdlib.h> #include <stdlib.h>
#include <gtk/gtk.h> c
#include <math.h>
FILE *fp;
gboolean kmeans(struct data_frame *df,unsigned long long int *count_A,unsigned long long int *count_B, gboolean kmeans(struct data_frame *df,unsigned long long int *count_A,unsigned long long int *count_B,
unsigned long long int *count_C,long double *A,long double *B,long double *C) unsigned long long int *count_C,long double *A,long double *B,long double *C)
{ {
float CURR_FREQ = to_intconvertor(df->dpmu[0]->freq); float CURR_FREQ = 50 + to_intconvertor(df->dpmu[0]->freq)*1e-3;
long double diff_A = fabs(*A-CURR_FREQ); long double diff_A = fabs(*A-CURR_FREQ);
long double diff_B = fabs(*B-CURR_FREQ); long double diff_B = fabs(*B-CURR_FREQ);
long double diff_C = fabs(*C-CURR_FREQ); long double diff_C = fabs(*C-CURR_FREQ);
printf("A: %Lf, B: %Lf, C: %Lf\n",*A,*B,*C); //fp = fopen("points.csv","a");
//printf("A: %Lf, B: %Lf, C: %Lf\n",*A,*B,*C);
//fprintf(fp,"%Lf, %Lf, %Lf\n",*A,*B,*C);
//fclose(fp);
if(diff_A <= diff_B && diff_A <= diff_C){ if(diff_A <= diff_B && diff_A <= diff_C){
*A = ((*count_A*(*A))+CURR_FREQ)/(++*count_A); *A = ((*count_A*(*A))+CURR_FREQ)/(++*count_A);
return TRUE; return TRUE;

View File

@ -1,11 +1,14 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h>
#include "align_sort.h" #include "align_sort.h"
#include "map_vis.h" #include "map_vis.h"
#include "parser.h" #include "parser.h"
#include "osm-gps-map.h" #include "osm-gps-map.h"
#include "Attack_detect.h" #include "Attack_detect.h"
#include "Kmeans.h" #include "Kmeans.h"
#include "Dynamic_time_warping.h"
gboolean value = true;
gboolean update_images(gpointer* pars){ gboolean update_images(gpointer* pars){
myParameters* parameters = (myParameters*) pars; myParameters* parameters = (myParameters*) pars;
@ -15,7 +18,10 @@ gboolean update_images(gpointer* pars){
} }
int freq = to_intconvertor(df->dpmu[0]->freq); int freq = to_intconvertor(df->dpmu[0]->freq);
//gboolean green =attack_detect(df,&START,&COUNT,&SUM_OF_FREQUENCY); //gboolean green =attack_detect(df,&START,&COUNT,&SUM_OF_FREQUENCY);
gboolean green = kmeans(df,&count_A,&count_B,&count_C,&A,&B,&C); //printf("map_vis A: %Lf, B: %Lf,C: %Lf\n",A,B,C);
//gboolean green = kmeans(df,&count_A,&count_B,&count_C,&A,&B,&C);
DTWdistance(df,&value);
gboolean green=value;
if(parameters->g_last_image != 0){ if(parameters->g_last_image != 0){
osm_gps_map_image_remove(parameters->util_map, parameters->g_last_image); osm_gps_map_image_remove(parameters->util_map, parameters->g_last_image);
} }

View File

@ -53,7 +53,7 @@ void utility_tools(GtkButton *but, gpointer udata)
NULL); NULL);
osm_gps_map_set_center_and_zoom (util_map, 15.4589, 75.0078, 10); osm_gps_map_set_center_and_zoom (util_map, 15.4589, 75.0078, 10);
g_last_image = osm_gps_map_image_add(util_map,15.4589, 75.0078, g_red_image); //g_last_image = osm_gps_map_image_add(util_map,15.4589, 75.0078, g_red_image);
g_last_image = osm_gps_map_image_add(util_map,15.518597, 74.925584, g_green_image); g_last_image = osm_gps_map_image_add(util_map,15.518597, 74.925584, g_green_image);
myParameters parameters = {util_map, g_red_image, g_green_image, g_last_image}; myParameters parameters = {util_map, g_red_image, g_green_image, g_last_image};
gpointer data = (gpointer) &parameters; gpointer data = (gpointer) &parameters;