⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd6sum2.pro

📁 用分形算法对高光谱图像压缩的MATLAB程序
💻 PRO
字号:
pro rd6sum2,Rklh,DSijt,DSijt1,rdsum,p
    rdsum=0L

    case p of
    0:DSijt1=DSijt                     ;旋转0   OK
    1: begin                 ;以层为基准旋转90
       for j=0,3,1 do begin
         DSijt1(*,*,j)=rotate(DSijt[0:3,0:3,j],1)
       endfor
       end
    2: begin                ;以层为基准旋转180  OK
       for j=0,3,1 do begin
         DSijt1(*,*,j)=rotate(DSijt[0:3,0:3,j],2)
       endfor
       end
    3: begin                ;以层为基准旋转270  OK
       for j=0,3,1 do begin
         DSijt1(*,*,j)=rotate(DSijt[0:3,0:3,j],3)
       endfor
       end
    4:begin                 ;以行为基准旋转90(前转)  ok
       arr1=intarr(4,4)
       for j=0,3,1 do begin
       arr2=DSijt[0:3,j,0:3]
       arr1[*,*]=arr2[*,*,*]
       DSijt1(*,*,j)=rotate(arr1,1)
       endfor  ;for  j

       end

    5:begin                 ;以行为基准旋转180  ok
       arr1=intarr(4,4)
       for j=0,3,1 do begin
         arr2=DSijt[0:3,j,0:3]
         arr1[*,*]=arr2[*,*,*]
         DSijt1(*,*,j)=rotate(arr1,2)
       endfor  ;for  j
       end
     6:begin                 ;以行为基准旋转270  ok
       arr1=intarr(4,4)
       for j=0,3,1 do begin
       arr2=DSijt[0:3,j,0:3]
       arr1[*,*]=arr2[*,*,*]
       DSijt1(*,*,j)=rotate(arr1,3)
       endfor  ;for  j
       end
     7:begin                ;以列为基准旋转90  ok
        arr1=intarr(4,4,4)
        arr2=intarr(4,4)
        Ds=intarr(4,4,4)
        for j=0,3,1 do begin
          arr1=DSijt[j,0:3,0:3]

          arr2=transpose(reform(arr1))
     ;     for k=0,7,1 do begin
      ;    arr2(k,*)=arr1[*,*,k]
      ;  endfor   ;

        DSijt1(*,*,j)=rotate(rotate(arr2,1),1)
        endfor   ;for j

        end
     8:begin                ;以列为基准旋转180  ok
        arr1=intarr(4,4,4)
        arr2=intarr(4,4)
        for j=0,3,1 do begin
          arr1=DSijt[j,0:3,0:3]
          arr2=transpose(reform(arr1));
        DSijt1(*,*,j)=rotate(rotate(arr2,1),2)
        endfor   ;for j
       end
     9:begin                ;以列为基准旋转270    ok
        arr1=intarr(4,4,4)
        arr2=intarr(4,4)
        for j=0,3,1 do begin
          arr1=DSijt[j,0:3,0:3]
          arr2=transpose(reform(arr1))
        DSijt1(*,*,j)=rotate(rotate(arr2,1),3)
        endfor   ;for j
        end
     10:begin                 ;以层为基准左右镜像
       for j=0,3,1 do begin
         DSijt1(*,*,j)=reverse(DSijt[0:3,0:3,j],1)
       endfor
       end
     11:begin                 ;以层为基准上下镜像
       for j=0,3,1 do begin
         DSijt1(*,*,j)=reverse(DSijt[0:3,0:3,j],2)
       endfor
       end
     12:begin             ;以行为基准左右镜像
        arr1=fltarr(4,4,4)
       for j=0,3,1 do begin
       arr1=reform(DSijt[0:3,j,0:3])
     ;    for k=0,7,1 do begin
     ; arr3(*,k)=arr1[*,*,k]
     ; endfor   ;for k
         dsijt1(*,*,j)=reverse(arr1,1)
       endfor  ;for  j
       end
     13:begin             ;以行为基准上下镜像
       arr1=fltarr(4,4,4)
       for j=0,3,1 do begin
       arr1=reform(DSijt[0:3,j,0:3])
       dsijt1(*,*,j)=reverse(arr1,2)
       endfor  ;for  j
       end
     14:begin             ;以列为基准左右镜像
       arr1=fltarr(4,4,4)
       for j=0,3,1 do begin
       arr1=DSijt[j,0:3,0:3]
       arr2=transpose(reform(arr1))
     ;  for k=0,3,1 do begin
      ; arr3(k,*)=arr1[*,*,k]
     ;  endfor   ;for k
       dsijt1(*,*,j)=reverse(arr2,1)
       endfor  ;for  j
       end
     15:begin             ;以列为基准上下镜像
        arr1=fltarr(4,4,4)
       for j=0,3,1 do begin
       arr1=DSijt[j,0:3,0:3]
       arr2=transpose(reform(arr1))
     ;  for k=0,3,1 do begin
      ; arr3(k,*)=arr1[*,*,k]
     ;  endfor   ;for k
       dsijt1(*,*,j)=reverse(arr2,2)
       endfor  ;for  j
       end
     16:begin            ;以层为基准主对角线转置
         arr1=fltarr(4,4,4)
         for j=0,3,1 do begin
         arr1=DSijt[0:3,0:3,j]
         dsijt1(*,*,j)=transpose(arr1)
         endfor

       end
     17:begin            ;以层为基准次对角线转置
         arr1=fltarr(4,4,4)
         for j=0,3,1 do begin
         arr1=DSijt[0:3,0:3,j]
         DSijt1(*,*,j)=rotate(arr1,6)
         endfor

       end
     18:begin            ;以行为基准主对角线转置
         arr1=fltarr(4,4,4)
         for j=0,3,1 do begin
          arr1=DSijt[0:3,j,0:3]
          dsijt1(*,*,j)=transpose(reform(arr1))
        endfor  ;for  j
        end
     19:begin            ;以行为基准次对角线转置
         arr1=fltarr(4,4,4)
         arr2=fltarr(4,4,4)
         arr3=fltarr(4,4)

         for j=0,3,1 do begin
          arr1=DSijt[0:3,j,0:3]
          for k=0,3,1 do begin
          arr3(*,k)=arr1[*,*,k]
          endfor   ;for k
          dsijt1(*,*,j)=rotate(arr3,6)
        endfor  ;for  j

       end
     20:begin           ;以列为基准主对角线转置
         arr1=fltarr(4,4,4)
         arr2=fltarr(4,4,4)
         arr3=fltarr(4,4)
          for j=0,3,1 do begin
          arr1=DSijt[j,0:3,0:3]
          for k=0,3,1 do begin
          arr3(k,*)=arr1[*,*,k]
          endfor   ;for k
          dsijt1(*,*,j)=transpose(arr3)
         endfor  ;for  j

       end
      21:begin           ;以列为基准次对角线转置
         arr1=fltarr(4,4,4)
         arr2=fltarr(4,4,4)
         arr3=fltarr(4,4)

         for j=0,3,1 do begin
          arr1=DSijt[j,0:3,0:3]
          for k=0,3,1 do begin
          arr3(k,*)=arr1[*,*,k]
          endfor   ;for k
         dsijt1(*,*,j)=rotate(arr3,6)
         endfor  ;for  j

       end
endcase
;print,p
;print,DSijt1
 ;计算Rklh*DSijt1的和
rdsum=total(long(Rklh)*long(DSijt1))


end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -