爱吃炸鸡的小胖妞 2023-02-12 00:00 采纳率: 50%
浏览 17
已结题

想把这个公式变成R代码,但是第二项总是编错,请大家帮帮我!

我想把这个公式变成R代码,但是第二项总是编错,请大家帮帮我!

CD=function(x){  ##### x表示输入的设计矩阵#####
n=nrow(x)
m=ncol(x)

f=array(0,dim=c(n,1))
for(i in 1:n)
       {
       
       u=array(0,dim=c(1,m))
       for(j in 1:m)
          {
          
          u[1,j]=1+(1/2)*((x[i,j]-0.5)^2)^(1/2)-(1/2)*(x[i,j]-0.5)^2
          
          }
          
         j=1
         f[i,1]=1
         while(j<=m) {
                     f[i,1]=f[i,1]*u[1,j]
                     i=i+1
                     }
                     
    
        }        
    
g=array(0,dim=c(n,n))
for(i in 1:n)
    {for(k in 1:n)
       {
        
         v=array(0,dim=c(1,m))
         for(j in 1:m)
        {
             
             v[1,j]=1+(1/2)*((x[i,j]-0.5)^2)^(1/2)+(1/2)*((x[k,j]-0.5)^2)^(1/2)-(1/2)*((x[i,j]-x[k,j])^2)^(1/2) 
          
            }
        
         j=1
         g[i,k]=1
         while(j<=m) {
                     g[i,k]=g[i,k]*v[1,j]
                     j=j+1
                     }
             
        }
    }
    
CD=(13/12)^m-(1/n)*sum(f)+(1/n^2)*sum(g)
CD
}

d=matrix(c( 
0,1,1,1,0,1,0,1,0,0,1,1,1,1,0,1, 
1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0, 
1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, 
1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1, 
0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1, 
1,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1, 
1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0, 
1,0,0,1,0,1,1,0,1,0,1,0,0,0,1,0
),ncol=16,nrow=8,byrow=T)
CD(d)


```我一下!

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/761879031676181.jpg "#left")
  • 写回答

1条回答 默认 最新

  • Liamttk10 2023-02-12 09:19
    关注
    
    CD=function(x){  # x表示输入的设计矩阵
      n=nrow(x)
      m=ncol(x)
     
      f=array(0,dim=c(n,1))
      for(i in 1:n) {
        u=array(0,dim=c(1,m))
        for(j in 1:m) {
          u[1,j]=1+(1/2)*sqrt((x[i,j]-0.5)^2)-(1/2)*(x[i,j]-0.5)^2
        }
        j=1
        f[i,1]=1
        while(j<=m) {
          f[i,1]=f[i,1]*u[1,j]
          j=j+1
        }
      }        
        
      g=array(0,dim=c(n,n))
      for(i in 1:n) {
        for(k in 1:n) {
          v=array(0,dim=c(1,m))
          for(j in 1:m) {
            v[1,j]=1+(1/2)*sqrt((x[i,j]-0.5)^2)+(1/2)*sqrt((x[k,j]-0.5)^2)-(1/2)*sqrt((x[i,j]-x[k,j])^2)
          }
          j=1
          g[i,k]=1
          while(j<=m) {
            g[i,k]=g[i,k]*v[1,j]
            j=j+1
          }
        }
      }
        
      CD=(13/12)^m-(1/n)*sum(f)+(1/n^2)*sum(g)
      return(CD)
    }
     
    d=matrix(c( 
    0,1,1,1,0,1,0,1,0,0,1,1,1,1,0,1, 
    1,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0, 
    1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0, 
    1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1, 
    0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1, 
    1,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1, 
    1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0, 
    1,0,0,1,0,1,1,0,1,0,1,0
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月20日
  • 已采纳回答 2月12日
  • 创建了问题 2月12日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法