文章目录

  • 前言
  • 一、移动通信中的算法问题
    • 1.算法背景
    • 2.核心代码
  • 二、通信网中的算法问题
    • 1.算法背景
    • 2.核心思路
    • 3.python版本
  • 三.k-means算法实验
    • 1.算法背景
    • 2.代码实现
  • 总结

前言

坐标南山,通信工程,对自己所学内容进行记录和分享,希望可以帮助到有需要的的同学。

一、移动通信中的算法问题

1.算法背景



信号强度核心算法:

相关检测技术:

相关检测技术是信号检测领域里一种重要工具,常用于从噪声背景中检测出有用的确定性信号。它利用确定性信号在不同时刻的取值一般都具有较强相关性,而干扰噪声因为随机性较强,不同时刻取值相关性较差的特性,把确定性信号和干扰噪声区分开来。
假设确定信号序列为x[m],具有噪声背景的实际信号序列为y[n],m<n,通过滑动相关计算,找出滑动相关计算序列z[k]的最大的值,则可以求出具有噪声背景的实际信号序列y中所包含的确定信号序列x的位置。

滑动相关核心算法:

2.核心代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define datafile_N 48
#define pssfile_N 3
#define data_N 30000
#define pss_N 4096
double sum_power(double *arr);
double bubble_sort(double *a, int n);
double slide_re(double *a, double *b);
main()
{int i=0, j=0, k=0, x, y;double max;char order[3]="",path1[50]="C:\\Users\\17513\\Desktop\\data\\data";char path2[50]="C:\\Users\\17513\\Desktop\\data\\PSS";char datar[data_N][50];double datat[data_N];double power[datafile_N];double power_sort[datafile_N];double re_all[3][48];double re_max[pssfile_N][1];char pssr[pssfile_N][50];double psst[pssfile_N][pss_N];//char pssi[pssfile_N][pss_N/2];FILE *fp[48];for(i=0;i<pssfile_N;i++){order[0]=i+'0';strcat(strcat(path2, order), ".txt");if((fp[i]= fopen(path2, "r"))==NULL)printf("\nCannot open the file!");else//printf("\nfile %s open successfully!\n",path2);for(j=0;j<pss_N;j++){fscanf(fp[i],"%lf",&psst[i][j]);//printf("%lf", psst[i][j]);}//for(j=0;j<pss_N;j++)//    printf("\n%lf", psst[i][j]);strcpy(order,"");strcpy(path2,"C:\\Users\\17513\\Desktop\\data\\PSS");} order[1]=NULL;for(i=0; i<48; i++){if(i>9){order[1]=i%10 + '0';order[0]=i/10 + '0';}elseorder[0]=i+'0';strcat(strcat(path1, order), ".txt");if((fp[i]= fopen(path1, "r"))==NULL)printf("\nCannot open the file!");else//printf("file %s open successfully!\n",path1);for(j=0;j<data_N;j++){fgets(datar[j],50,fp[i]);datat[j]=atof(datar[j]);}          power[i]=sum_power(datat);power_sort[i]=sum_power(datat);for(j=0;j<3;j++){re_all[j][i]=slide_re(datat, psst[j]);               //bubble_sort(re_all, 12952);   }/*if(i==47)  for(j=0;j<3;j++){ for(k=0;k<48;k++)printf("%lf ", re_all[j][k]);printf("\n");}*/                strcpy(order,"");strcpy(path1,"C:\\Users\\17513\\Desktop\\data\\data");}bubble_sort(power_sort,48);for(i=0;i<3;i++){max=re_all[i][0];x = i;y = 0;for(j=0;j<48;j++){if(re_all[i][j]>max){max=re_all[i][j];y=j;}}printf("PSS%d and data%d is the most relevant!\n", x, y);     }/*for(int l =0;l<48;l++){printf("%d  %lf\n", l, power_sort[l]);// 打印排列后的数据 }*/for(k=0;k<48;k++){if(power[k]==power_sort[47])printf("\nMAX POWER IS data%d.txt", k);}}
double sum_power(double *arr)//计算能量
{int i=0;double a=0.0;for(i=0;i<data_N;i=i+2){a += sqrt(arr[i]*arr[i] + arr[i+1]*arr[i+1]);}//printf("\n%lf", a);return a;
}
double bubble_sort(double *a, int n) //冒泡排序
{int i,j;    double temp;//定义三个整型变量 for (j=0;j<n-1;j++)    //用一个嵌套循环来遍历一遍每一对相邻元素   {                           for (i=0;i<n-1-j;i++){if(a[i]>a[i+1])    //从大到小排就把左边的">"改为"<" {temp=a[i];      //a[i]与a[i+1](即a[i]后面那个) 交换a[i]=a[i+1];    //基本的交换原理"c=a;a=b;b=c" a[i+1]=temp;}}}  return 0;
}
double slide_re(double *a, double *b)
{int i, j ,k, location;double c[(data_N-pss_N)/2+1];double s, r, v, max;for(i=0;i<(data_N-pss_N);i+=2){s = 0;r = 0;v = 0;for(j=0;j<pss_N;j=j+2){r += a[j+i]*b[j]+a[j+i+1]*b[j+1];v += a[j+i]*b[j]-a[j+i]*b[j+1];}//s = r + v;s = pow(r, 2) + pow(v,2);s = sqrt(s);c[i/2] = s;}max=c[0];for(i=0;i<12953;i++){if(c[i]>max){max=c[i];location=i;}       }//printf("%d\n",location);return max;
}

二、通信网中的算法问题

1.算法背景

由于实验要求使用Dijkstra算法计算图的最短路径问题,所以简单介绍一下相关内容

求解问题:

算出此拓扑图中的各个点到其它点的最短路径

**

2.核心思路

**
由于lz没想到什么更好的办法,所以将此拓扑图手动变成矩阵写在一个txt文件中,再通过文件操作读入程序中,然后再进行其他操作。


代码:

#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define INF 10000
int dist[MAX], prev[MAX];
// 邻接矩阵
typedef struct _graph
{int vexs[MAX];           // 顶点集合int vexnum;           // 顶点数int edgnum;           // 边数int *matrix;          // 一维数组指针偏移表示邻接矩阵
}Graph, *PGraph;void printf_path(int u,int x);
void dijkstra(Graph G, int vs, int prev[], int dist[], int n);
int *read_Matrix(int *a, int n);
int read_Vex(int i, int n);
main()
{int i, j, n, vs;int *a;int *b;Graph G;printf("Please Input The Matrix's Scale:\n");scanf("%d", &n);for(i=0;i<n;i++){G.vexs[i]= read_Vex(i, n);}G.vexnum = n;G.edgnum = 0;                        //顶点数 G.matrix = read_Matrix(a, n);    //将文件中的数据读入图的邻接矩阵中 for(i=0;i<n;i++){for(j=0;j<n;j++){if(G.matrix[i*n+j]>0 && G.matrix[i*n+j]<10000) //读取边数 G.edgnum++;printf("%-5d ", G.matrix[i*n+j]);  }printf("\n");}printf("\n\n");do{system("pause");system("cls");printf("Please Input The Source Code:\n");scanf("%d", &vs);if(vs<=0 || vs>n)break;dijkstra(G, vs-1, prev, dist, n);}while(1);/*for(i=0;i<n;i++){printf("%d ", G.vexs[i]);}printf("%d\n", G.edgnum);*/
}
int read_Vex(int i, int n) //输入顶点编号
{if(i<n)return i+1;else return -1;
}
int *read_Matrix(int *a, int n)//读取文件中的邻接矩阵
{int  i, j;char str[10];FILE *fp;if((fp = fopen("D:\\Work\\通信软件\\实验二\\MGraph.txt", "r+"))==NULL)printf("Cannot Open The File!\n");elsea = (int*)calloc(n*n, sizeof(int)); //分配动态内存 for(i=0;i<n;i++){for(j=0;j<n;j++)fscanf(fp,"%d ", &a[i*n+j]);//指针偏移 }  /*for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-5d ", a[i*n+j]);printf("\n");}*/fclose(fp);return a;
}
/** Dijkstra最短路径。* 即,统计图(G)中"顶点vs"到其它各个顶点的最短路径。** 参数说明:*        G -- 图*       vs -- 起始顶点(start vertex)。即计算"顶点vs对应的数组编号"到其它顶点的最短路径。*     prev -- 前驱顶点数组。即,prev[i]的值是"顶点vs"到"顶点i"的最短路径所经历的全部顶点中,位于"顶点i"之前的那个顶点。*     dist -- 长度数组。即,dist[i]是"顶点vs"到"顶点i"的最短路径的长度。*     n    -- 顶点数 */
void dijkstra(Graph G, int vs, int prev[], int dist[], int n)
{int i,j,k, m=0;int min;int tmp;int flag[MAX];// flag[i]=1表示"顶点vs"到"顶点i"的最短路径已成功获取。int path[MAX][MAX];  // 初始化for (i = 0; i < G.vexnum; i++){flag[i] = 0;              // 顶点i的最短路径还没获取到。prev[i] = -1;              // 顶点i的前驱顶点为0。dist[i] = G.matrix[vs*n+i];// 顶点i的最短路径为"顶点vs"到"顶点i"的权。}for (i = 0; i < G.vexnum; i++){if(G.matrix[vs*n+i]<INF)prev[i]=vs;}// 对"顶点vs"自身进行初始化flag[vs] = 1;dist[vs] = 0;for (i = 1; i < G.vexnum; i++)  // 遍历G.vexnum-1次;每次找出一个顶点的最短路径。{  min = INF;for (j = 0; j < G.vexnum; j++)// 寻找当前最小的路径,即在未获取最短路径的顶点中,找到离vs最近的顶点(k)。{if (flag[j]==0 && dist[j]<min){min = dist[j];k = j;}}// 标记"顶点k"为已经获取到最短路径flag[k] = 1;// 修正当前最短路径和前驱顶点// 即,当已经"顶点k的最短路径"之后,更新"未获取最短路径的顶点的最短路径和前驱顶点"。for (j = 0; j < G.vexnum; j++){tmp = (G.matrix[k*n+j]==INF ? INF : (min + G.matrix[k*n+j])); // 防止溢出if (flag[j] == 0 && (tmp  < dist[j]) ){dist[j] = tmp;prev[j] = k;}}}// 打印dijkstra最短路径的结果printf("\nThe Vex(%d)'s and others' shortest path: \n", G.vexs[vs]);for (i = 0; i < G.vexnum; i++){printf("Vex(%d) and Vex(%d)'s shortest path and consume:%d\n", G.vexs[vs], G.vexs[i], dist[i]);printf_path(vs,i);}}
void printf_path(int u,int x) //打印路径和消耗
{int a[MAX],cou=0,ex=x;if(u==x)printf("%d-%d",u+1,x+1);else if(prev[x]==-1)printf("%d-%d=∞",u+1,x+1);//没有路径else{while(x!=u){a[cou++]=x;x=prev[x];}a[cou]=x;for(int i=cou; i>0; i--)printf("%d-",a[i]+1);printf("%d",a[0]+1);}printf("\n");
}

运行结果:

保证程序的可移植性,手动输入邻接矩阵的大小。

读入数据。


输入源点后得到相应的最短路径。

3.python版本

利用python方便许多,可直接将数据写入excel中,再进行读入,代码也很短

代码:

from pandas import read_excel
import os
path_metrix=read_excel(os.getcwd()+"\\metrix.xlsx")##读取文件用
tu_dict={}##邻接矩阵表示的图
rt_dict={}##一个节点的路由字典
point_queue=[]
#导入邻接矩阵
for i in range(0,len(path_metrix)):tu_dict["v"+str(i+1)]={}for j in range(0,len(path_metrix)):tu_dict["v"+str(i+1)]["v"+str(j+1)]=path_metrix[i][j]result_file=open("结果.txt","w+")
for h in range(0,len(path_metrix)):#建立路由字典(v1,v2,v3...vh)for i in range(0,len(path_metrix)):rt_dict["v"+str(i+1)]={}if i==h:rt_dict["v"+str(i+1)]["dis"]=0rt_dict["v"+str(i+1)]["n_point"]="v"+str(h+1)else:rt_dict["v"+str(i+1)]["dis"]=1000rt_dict["v"+str(i+1)]["n_point"]="none"point_queue.append("v"+str(h+1))##迪杰斯特拉算法开始while point_queue!=[]:for v in tu_dict[point_queue[0]]:if rt_dict[point_queue[0]]["dis"]+tu_dict[point_queue[0]][v]<rt_dict[v]["dis"]:rt_dict[v]["dis"]=rt_dict[point_queue[0]]["dis"]+tu_dict[point_queue[0]][v]if str(v) not in point_queue:point_queue.append(str(v))rt_dict[v]["n_point"]=str(point_queue[0])del point_queue[0]##输出结果for i in range(1,len(path_metrix)+1):if i==h+1:continueelse:path="v"+str(i)v=rt_dict["v"+str(i)]["n_point"]while v!="v"+str(h+1):path=v+"-"+pathv=rt_dict[v]["n_point"]path="v"+str(h+1)+"-"+pathresult="v"+str(h+1)+"到"+"v"+str(i)+"最短距离:"+str(rt_dict["v"+str(i)]["dis"])+"\t路径:"+pathresult_file.write(result+"\n")print(result)result_file.write("\n")print("")
result_file.close()

结果:

三.k-means算法实验

1.算法背景

聚类算法简单介绍:


k-means算法
k-means算法,也被称为k-均值或k-平均。
该算法首先随机地选择k个对象作为初始的k个簇的质心;然后对剩余的每个对象,根据其与各个质心的距离,将它赋给最近的簇,然后重新计算每个簇的质心;这个过程不断重复,直到准则函数收敛。
通常采用的准则函数为平方误差和准则函数,即 SSE(sum of the squared error),其定义如下:


SSE是数据库中所有对象的平方误差总和,p为数据对象,mi是簇Ci的平均值。这个准则函数使生成的结果尽可能的紧凑和独立。

实验所求问题:

通过这三年的数据,将这几只球队分成三类

2.代码实现

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include<iostream>
#include<algorithm>
#define N 15 //数据个数
#define K 3 //聚类个数
#define delta 0.01 //迭代终止的判断条件
using namespace std;typedef struct
{double x;double y;double z;int Group;char name[15];
}Data ;
Data D[N];
Data Dpre[N];void read_data(Data D[N],int n); //文件读数据
void data_pre_manage(Data D[N], int n); //数据预处理
void K_means(Data D[N], int n, int k);//核心算法
void Code_iteration(double x[], double y[], double z[], int k);//中心点迭代
double dist_cal(double x1, double y1, double z1, double x2, double y2, double z2);//点距离计算 main()
{int i;read_data(D, N);read_data(Dpre,N);data_pre_manage(Dpre, N);for(i=0;i<N;i++){printf("%.2lf %.2lf %.2lf %s\n", Dpre[i].x, Dpre[i].y, Dpre[i].z, Dpre[i].name);}K_means(Dpre, N, K);}
void read_data(Data D[N], int n)
{int i;FILE *fp;if((fp = fopen("D:\\Work\\通信软件\\实验三\\World Cup_data.txt", "r+"))==NULL)printf("Cannot Open The File!\n");elsefor(i=0;i<n;i++){fscanf(fp,"%lf %lf %lf %s", &D[i].x, &D[i].y, &D[i].z, D[i].name);}fclose(fp);
}
void data_pre_manage(Data D[N], int n)
{int i;double Dx_min=D[0].x, Dx_max=D[0].x;double Dy_min=D[0].y, Dy_max=D[0].y;double Dz_min=D[0].z, Dz_max=D[0].z;for(i=0;i<n;i++){if(Dx_min>D[i].x)Dx_min=D[i].x;if(Dx_max<D[i].x)Dx_max=D[i].x;if(Dy_min>D[i].y)Dy_min=D[i].y;if(Dy_max<D[i].y)Dy_max=D[i].y;if(Dz_min>D[i].z)Dz_min=D[i].z;if(Dz_max<D[i].z)Dz_max=D[i].z;}for(i=0;i<n;i++){D[i].x = (D[i].x-Dx_min)/(Dx_max-Dx_min);D[i].y = (D[i].y-Dy_min)/(Dy_max-Dy_min);D[i].z = (D[i].z-Dz_min)/(Dz_max-Dz_min);}//printf("%lf %lf\n",Dx_min, Dx_max );} void K_means(Data D[N], int n, int k){int i, j;int a[K][n], temp;int num[K]={0,0,0};double sum_co[K];double x[K], y[K], z[K];double dist[n][K];double code[K][K];double dist1, dist2, dist3;srand((unsigned int)time(0));for(i=0; i<k; i++) //生成随机K个点作为初始中心 {a[i][0] = rand()%N;temp=a[i][0];for(j=0;j<k;j++)//避免产生的随机数重复md {if(temp==a[j][0])temp=rand()%N;else break;}a[i][0]=temp;}printf("The Initial Center point is:\n"); for(j=0;j<k;j++){printf("%d ", a[j][0]);}printf("\n");for(i=0;i<n;i++){for(j=0;j<k;j++){dist[i][j]=dist_cal(Dpre[i].x,Dpre[i].y,Dpre[i].z,Dpre[a[j][0]].x,Dpre[a[j][0]].y,Dpre[a[j][0]].z);//计算距离 }  //cout<<*min_element(dist[i],dist[i]+3)<<' ';for(j=0;j<k;j++){if(dist[i][j]==*min_element(dist[i],dist[i]+3)) //分组 Dpre[i].Group=j;    }}/*for(i=0;i<n;i++){for(j=0;j<k;j++){printf("%lf  ", dist[i][j]);}cout<<*min_element(dist[i],dist[i]+3)<<' ';printf("\n");}*/for(i=0;i<n;i++)//第一次分组后计算中心点 {if(Dpre[i].Group==0){num[0]++;x[0] += Dpre[i].x;y[0] += Dpre[i].y;z[0] += Dpre[i].z;}       else if(Dpre[i].Group==1){num[1]++;x[1] += Dpre[i].x;y[1] += Dpre[i].y;z[1] += Dpre[i].z;}            else {x[2] += Dpre[i].x;y[2] += Dpre[i].y;z[2] += Dpre[i].z;}//sum_co[i]=x[i]+y[i]+z[i];}num[2]=n-num[0]-num[1];for(i=0;i<k;i++){x[i] /= num[i];y[i] /= num[i];z[i] /= num[i];sum_co[i]=x[i]+y[i]+z[i];}//printf("test\n");dist1=dist_cal(x[0],y[0],z[0],Dpre[a[0][0]].x,Dpre[a[0][0]].y,Dpre[a[0][0]].z);dist2=dist_cal(x[1],y[1],z[1],Dpre[a[1][0]].x,Dpre[a[1][0]].y,Dpre[a[1][0]].z);dist3=dist_cal(x[2],y[2],z[2],Dpre[a[2][0]].x,Dpre[a[2][0]].y,Dpre[a[2][0]].z);if(dist1<delta  && dist2<delta  && dist3<delta){for(i=0;i<K;i++){if(sum_co[i]==*min_element(sum_co,sum_co+3)){printf("The Asia First Class Are:\n");for(j=0;j<n;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);}printf("\n");}else if(sum_co[i]==*max_element(sum_co,sum_co+3)){printf("The Asia Third Class Are:\n");for(j=0;j<n;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);} printf("\n");}else{printf("The Asia Second Classs Are:\n");for(j=0;j<k;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);}printf("\n");}         }}else{ Code_iteration(x, y, z, k); }}
void Code_iteration(double x[], double y[], double z[], int k)
{int i, j, num[k]={0,0,0};double x_NEW[k], y_NEW[k], z_NEW[k], sum_co[k];double dist[N][k];//printf("test\n");for(i=0;i<N;i++){for(j=0;j<k;j++){dist[i][j]=dist_cal(Dpre[i].x,Dpre[i].y,Dpre[i].z,x[j],y[j],z[j]);//计算距离 }  for(j=0;j<k;j++){if(dist[i][j]==*min_element(dist[i],dist[i]+3)) //分组 Dpre[i].Group=j;    }   }for(i=0;i<N;i++)//分组后计算中心点 {if(Dpre[i].Group==0){num[0]++;x_NEW[0] += Dpre[i].x;y_NEW[0] += Dpre[i].y;z_NEW[0] += Dpre[i].z;}      else if(Dpre[i].Group==1){num[1]++;x_NEW[1] += Dpre[i].x;y_NEW[1] += Dpre[i].y;z_NEW[1] += Dpre[i].z;}            else {x_NEW[2] += Dpre[i].x;y_NEW[2] += Dpre[i].y;z_NEW[2] += Dpre[i].z;}}num[2]=N-num[0]-num[1];//printf("%d %d %d \n", num[0], num[1], num[2]);for(i=0;i<k;i++){x_NEW[i] /= num[i];y_NEW[i] /= num[i];z_NEW[i] /= num[i];sum_co[i]=x_NEW[i]+y_NEW[i]+z_NEW[i];}/*for(i=0;i<k;i++){printf("%lf ", sum_co[i]);}printf("\n");*/if(dist_cal(x[0],y[0],z[0],x_NEW[0],y_NEW[0],z_NEW[0])<delta && dist_cal(x[1],y[1],z[1],x_NEW[1],y_NEW[1],z_NEW[1])<delta && dist_cal(x[2],y[2],z[2],x_NEW[2],y_NEW[2],z_NEW[2])<delta){for(i=0;i<k;i++){if(sum_co[i]==*min_element(sum_co,sum_co+3)){printf("The Asia First Class Are:\n");for(j=0;j<N;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);}//printf("%lf ", sum_co[i]);printf("\n");}else if(sum_co[i]==*max_element(sum_co,sum_co+3)){printf("The Asia Third Class Are:\n");for(j=0;j<N;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);}//printf("%lf ", sum_co[i]);printf("\n"); }else{printf("The Asia Second Classs Are:\n");for(j=0;j<N;j++){if(Dpre[j].Group==i)printf("%s  ", Dpre[j].name);}//printf("%lf ", sum_co[i]);printf("\n");} }}elseCode_iteration(x_NEW,y_NEW,z_NEW,k);
}
double dist_cal(double x1, double y1, double z1, double x2, double y2, double z2)
{double dist;dist = sqrt(pow(x1-x2,2)+pow(y1-y2,2)+pow(z1-z2,2));return dist;
}

由于初始点的选择是随机的,由于本身数据的原因和lz代码的不健全性,所以结果会不稳定,因此挑选了一个相对较好的结果:

ps:
当时做实验时对文件读入情有独钟,故基本上数据读入都是文件操作

总结

以上是我大二一门实验课的部分实验内容及结果,有些代码是借鉴别的大佬的,由于时间过久,不知原帖在何处,如有了解的烦请告知。

通信软件基础实验分享相关推荐

  1. 基础实验中的抗体选择过程和避坑Tips

    基础实验中,抗原抗体结合反应是我们很常运用的一个原理,像免疫组化.免疫荧光.免疫印迹试验(Western Blot).ELISA等都是常见又很重要的几种实验.而实验的关键步骤,就在于抗体的选择.抗体选 ...

  2. 大学计算机实验图灵机模型与计算机硬件,北理大学计算机实验基础 实验一_图灵机模型与计算机硬件系统虚拟拆装-实验报告...

    1.1实验一实验一 图灵机模型与计算机硬件系统虚拟拆装图灵机模型与计算机硬件系统虚拟拆装五.实验报告五.实验报告2222实验名称:学号 姓名 班级: 实验时间:年 月 日 实验报告表 1-1 图灵机模 ...

  3. 电大工商管理计算机考试,东方电大工商管理专科计算机期末复习应用基础实验报告...

    <东方电大工商管理专科计算机期末复习应用基础实验报告>由会员分享,可在线阅读,更多相关<东方电大工商管理专科计算机期末复习应用基础实验报告(7页珍藏版)>请在人人文库网上搜索. ...

  4. 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案...

    <北理大学计算机实验基础实验二实验报告表答案>由会员分享,可在线阅读,更多相关<北理大学计算机实验基础实验二实验报告表答案(4页珍藏版)>请在人人文库网上搜索. 1.实验二实验 ...

  5. 大学计算机基础实践教程第二版素材,920730-大学计算机基础-实验素材-大学计算机基础教程2...

    <920730-大学计算机基础-实验素材-大学计算机基础教程2>由会员分享,可在线阅读,更多相关<920730-大学计算机基础-实验素材-大学计算机基础教程2(7页珍藏版)>请 ...

  6. 单片机STC89C51入门学习笔记--基础实验例程(一)

    文章目录 前言 1. 点亮第一个LED 1.1 代码 1.2 编译 1.3 程序下载 1.4 结果展示 1.5 常见问题及解决办法 2. LED灯闪烁 2.1 代码 2.2 编译 2.3 程序下载 2 ...

  7. 计算机基础操作的实验结论和体会是什么,计算机应用基础 实验报告

    <计算机应用基础 实验报告>由会员分享,可在线阅读,更多相关<计算机应用基础 实验报告(2页珍藏版)>请在人人文库网上搜索. 1.计算机应用基础 实验报告系 班级 姓名 学号 ...

  8. 计算机网络实验考试西南交大,西南交大大学计算机基础实验2参考答案

    西南交大大学计算机基础实验2参考答案 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 大学计算机基础实验报告大学计算机基础实验报告 ...

  9. 计算机基础数据库实验报告,北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发...

    <北航计算机软件技术基础实验报告实验报告4-2--数据库应用系统的开发>由会员分享,可在线阅读,更多相关<北航计算机软件技术基础实验报告实验报告4-2--数据库应用系统的开发(10页 ...

最新文章

  1. 【GCN】图卷积网络 Graph Convolutional Networks
  2. Java中创建线程需要使用的类_如何通过使用Java中的匿名类创建线程?
  3. 我们应该如何选择DR
  4. Caused by: java
  5. 自拟计算机作文100字,我的电脑作文100字五篇
  6. 打造智能家居安防系统 七个选购常识你需懂
  7. SQLServer中批量插入数据方式的性能对比
  8. [LTE] LTE基本架构
  9. 计算机专业课911,2018年北京物资学院911计算机学科专业基础综合考研复习资料...
  10. 用递归法求两个数的最大公约数
  11. Linux内核源码——通知链(notifier chain)
  12. 2015蓝桥真题(A组省赛)
  13. Go语言如何快速对接短信接口
  14. ps中怎么画直线和画参考线
  15. python打开json文件_python怎么读json文件
  16. Javascript 前端生成Word文档
  17. A Brief History of Just-In-Time 简读
  18. python socket介绍
  19. ubuntu14.04快捷键控制笔记本触摸板的开启与关闭
  20. 解读SM, SP和Warp

热门文章

  1. Boost之日期时间处理(date_time库)
  2. Tensorflow object detection API 搭建属于自己的物体识别模型(转载修改)
  3. 场效应管的性能和特点是什么分析-KIA MOS管
  4. Pyhton中用pandas解决excel中身份证号不全问题
  5. 消息队列kafka的面试问题汇总
  6. TypeScript:鱼群算法(CocosCreator小游戏)
  7. 求问:培训机构让我把简历包装成有1-2年工作经验,怎么办?
  8. Kubernetes集群kubectl命令的常见使用方法
  9. 绿色安全无需安装无需配置环境变量plsql
  10. 机械设计经验分享,兼顾这五个设计原则,才能真正做好非标设计