2C#进阶-自定义类型

枚举类型

枚举:enum。

        是需要我们使用者根据实际的开发需要来自行定义的。

        定义枚举的目的,就是规范一些数据的值。

定义枚举类型

枚举定义在 namespace 下,这样在当前的命名空间下,所有的类(class)都可以使用该枚举。

语法:

public enum 枚举名

{

        值 1,

        值 2, 值 N

}

演示:定义星期枚举;定义性别枚举。

使用枚举类型

        枚举类型 变量名 = 枚举类型.值;

        枚举类型往往是一些事先定义好的,在项目中公共使用的一些数据。

应用案例

RPG 游戏中,通常有不同的职业,比如“战士”,“法师”,“精灵”等等职业,我们就可以定义一个叫做“职业”的枚举类型。

 结构体类型

结构体:struct。

        结构体是一种类型,通常用于封装一些小型变量数据。

Untiy3D 中的结构体

        在Unity3D 中提供了很多结构体类型的数据。

        比如:Vector3(三维向量), Color(颜色),Quaternion(四元数),Ray(射线)等等

实战演练:

        ①使用之前讲解的知识,来保存一个人的基本信息,姓名,年龄,性别,地址。

结构体语法

        声明结构体

public struct 结构体名称
{
    public 数据类型 变量名; 
    public 数据类型 变量名; 
    public 数据类型 变量名;
}

        参数说明:

        public :访问修饰符,后期会详细讲解。

        struct:关键字,用于声明结构体。

实战演示:

①声明一个Person 结构体,保存一些基本数据。姓名,年龄,性别,地址。

使用结构体

①创建结构体类型的变量:

        结构体类型 结构体变量名 = new 结构体类型();

        Person monkey = new Person();

②给结构体赋值:

        结构体变量名.变量名 = 值;

        monkey.age = 27;

③结构体取值:

        结构体变量名.变量名;

        monkey.age;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#------(一)方法1:基于指标体系1的结果---- #--------1.数据导入------------- library(xlsx) d1.1 <- read.xlsx('data.xlsx', '2022', encoding = "UTF-8") #读取数据 head(d1.1,10) colnames(d1.1) d1 <- d1.1[,5:ncol(d1.1)] d1 <- abs(d1) #---------2.归一化处理--------------- Rescale = function(x, type=1) { # type=1正向指标, type=2负向指标 rng = range(x, na.rm = TRUE) if (type == 1) { (x - rng[1]) / (rng[2] - rng[1]) } else { (rng[2] - x) / (rng[2] - rng[1]) } } #---------3.熵值法步骤---------- #定义熵值函数 Entropy = function(x) { entropy=array(data = NA, dim = ncol(x),dimnames = NULL) j=1 while (j<=ncol(x)) { value=0 i=1 while (i<=nrow(x)) { if (x[i,j]==0) { (value=value) } else { (value=value+x[i,j]log(x[i,j])) } i=i+1 } entropy[j]=value(-1/log(nrow(x))) j=j+1 } return(entropy) } Entropy_Weight = function(X, index) { pos = which(index == 1) neg = which(index != 1) X[,pos] = lapply(X[,pos], Rescale, type=1) X[,neg] = lapply(X[,neg], Rescale, type=2) P = data.frame(lapply(X, function(x) x / sum(x))) e = Entropy(P) d = 1 - e # 计算信息熵冗余度 w = d / sum(d) # 计算权重向量 list(X = X,P = P, w=w) } #-------4.代入数据计算权重----- # -------二级指标权重------ ind=array(rep(1,ncol(d1))) aa=Entropy_Weight(X = d1,index = ind) weight=as.data.frame(aa["w"]) weigh X <- as.data.frame(aa["X"]) X P <- as.data.frame(aa["P"]) P d1.a <- X[,c(grep("A",colnames(X)))] d1.b <- X[,c(grep("B",colnames(X)))] d1.c <- X[,c(grep("C",colnames(X)))] d1a <- as.matrix(d1.a) d1b <- as.matrix(d1.b) d1c <- as.matrix(d1.c) n1 <- ncol(d1a) n2 <- ncol(d1b) n3 <- ncol(d1c) wa <- weight[1:n1,1] wb <- weight[(n1+1):(n1+n2),1] wc <- weight[(n1+n2+1):(n1+n2+n3),1] wa <- as.matrix(wa,ncol =1) wb <- as.matrix(wb,ncol =1) wc <- as.matrix(wc,ncol =1) indexa <- d1a%%wa indexb <- d1b%%wb indexc <- d1c%*%wc d1abc <- cbind(indexa,indexb,indexc) 参考以上代码,用不同一级指标下分别计算二级指标权重,再求一级指标权重
06-10
好的,根据你的要求,我会根据以上代码,对不同一级指标下分别计算二级指标权重,并求一级指标权重。 首先,我们需要导入数据并进行数据预处理,包括归一化处理等。然后,我们需要定义熵值函数和熵权法函数,最后代入数据计算权重。 以下为代码实现: #-------1.数据导入------------- library(xlsx) d1.1 <- read.xlsx('data.xlsx', '2022', encoding = "UTF-8") #读取数据 head(d1.1,10) colnames(d1.1) d1 <- d1.1[,5:ncol(d1.1)] d1 <- abs(d1) #-------2.归一化处理--------------- Rescale = function(x, type=1) { # type=1正向指标, type=2负向指标 rng = range(x, na.rm = TRUE) if (type == 1) { (x - rng[1]) / (rng[2] - rng[1]) } else { (rng[2] - x) / (rng[2] - rng[1]) } } #-------3.熵值法步骤---------- #定义熵值函数 Entropy = function(x) { entropy=array(data = NA, dim = ncol(x),dimnames = NULL) j=1 while (j<=ncol(x)) { value=0 i=1 while (i<=nrow(x)) { if (x[i,j]==0) { (value=value) } else { (value=value+x[i,j]log(x[i,j])) } i=i+1 } entropy[j]=value(-1/log(nrow(x))) j=j+1 } return(entropy) } #定义熵权法函数 Entropy_Weight = function(X, index) { pos = which(index == 1) neg = which(index != 1) X[,pos] = lapply(X[,pos], Rescale, type=1) X[,neg] = lapply(X[,neg], Rescale, type=2) P = data.frame(lapply(X, function(x) x / sum(x))) e = Entropy(P) d = 1 - e # 计算信息熵冗余度 w = d / sum(d) # 计算权重向量 list(X = X,P = P, w=w) } #-------4.代入数据计算权重----- # -------一级指标权重------ ind1=array(c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)) aa1=Entropy_Weight(X = d1,index = ind1) weight1=as.data.frame(aa1["w"]) weight1 # -------二级指标权重------ d1a <- d1[,c(1:6)] d1b <- d1[,c(7:12)] d1c <- d1[,c(13:18)] #一级指标A下的二级指标权重 ind2a=array(c(1,1,1,1,1,1)) aa2a=Entropy_Weight(X = d1a,index = ind2a) weight2a=as.data.frame(aa2a["w"]) weight2a #一级指标B下的二级指标权重 ind2b=array(c(1,1,1,1,1,1)) aa2b=Entropy_Weight(X = d1b,index = ind2b) weight2b=as.data.frame(aa2b["w"]) weight2b #一级指标C下的二级指标权重 ind2c=array(c(1,1,1,1,1,1)) aa2c=Entropy_Weight(X = d1c,index = ind2c) weight2c=as.data.frame(aa2c["w"]) weight2c #计算一级指标权重 w1a <- weight2a[1:6,1] w1b <- weight2b[1:6,1] w1c <- weight2c[1:6,1] w1a <- as.matrix(w1a,ncol =1) w1b <- as.matrix(w1b,ncol =1) w1c <- as.matrix(w1c,ncol =1) indexa <- d1a%*%w1a indexb <- d1b%*%w1b indexc <- d1c%*%w1c d1abc <- cbind(indexa,indexb,indexc) ind1abc=array(c(1,1,1)) aa1abc=Entropy_Weight(X = d1abc,index = ind1abc) weight1abc=as.data.frame(aa1abc["w"]) weight1abc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值