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

📄 matdata.f90

📁 三维FDTD,matlal编程,mur边界条件,平面波光源
💻 F90
📖 第 1 页 / 共 5 页
字号:
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(1,size(var),mxClassIDFromClassName('single'),0)
  ! --- Copy data to variable
  call mxCopyReal4toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Real4_1


! --- real(kind=8), 1-dimensional array
subroutine Put_Real8_1(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=8), dimension(:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericMatrix
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(1,size(var),mxClassIDFromClassName('double'),0)
  ! --- Copy data to variable
  call mxCopyReal8toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Real8_1

! --- Integer(kind=2), 2-dimensional array
subroutine Put_Int2_2(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=2), dimension(:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericMatrix
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(size(var,1),size(var,2),mxClassIDFromClassName('int16'),0)
  ! --- Copy data to variable
  call mxCopyInteger2toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Int2_2

! --- Integer(kind=4), 2-dimensional array
subroutine Put_Int4_2(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=4), dimension(:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericMatrix
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(size(var,1),size(var,2),mxClassIDFromClassName('int32'),0)
  ! --- Copy data to variable
  call mxCopyInteger4toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Int4_2

! --- real(kind=4), 2-dimensional array
subroutine Put_Real4_2(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=4), dimension(:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericMatrix
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(size(var,1),size(var,2),mxClassIDFromClassName('single'),0)
  ! --- Copy data to variable
  call mxCopyReal4toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Real4_2


! --- real(kind=8), 2-dimensional array
subroutine Put_Real8_2(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=8), dimension(:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericMatrix
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericMatrix(size(var,1),size(var,2),mxClassIDFromClassName('double'),0)
  ! --- Copy data to variable
  call mxCopyReal8toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Real8_2


! --- Integer(kind=2), 3-dimensional array
subroutine Put_Int2_3(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=2), dimension(:,:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericArray
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericArray(3,shape(var),mxClassIDFromClassName('int16'),0)
  ! --- Copy data to variable
  call mxCopyInteger2toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Int2_3


! --- Integer(kind=4), 3-dimensional array
subroutine Put_Int4_3(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=4), dimension(:,:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericArray
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericArray(3,shape(var),mxClassIDFromClassName('int32'),0)
  ! --- Copy data to variable
  call mxCopyInteger4toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Int4_3

! --- real(kind=4), 3-dimensional array
subroutine Put_real4_3(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=4), dimension(:,:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericArray
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  actionin = 'a'
  if (present(action)) actionin = action
  TrueAction = CheckAction(flnm,actionin)
  ! --- Open .mat file
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Create variable
  pa = mxCreateNumericArray(3,shape(var),mxClassIDFromClassName('single'),0)
  ! --- Copy data to variable
  call mxCopyReal4toPtr(var,mxGetPr(pa),size(var))
  ! --- Put variable into .mat file with given name
  sta = matPutVariable(mp,varname,pa)
  if (sta /= 0) then
    write(*,'("Fail to write data ",a," to .mat file ",a)')varname,trim(flnm)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then   
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Put_Real4_3

! --- real(kind=8), 3-dimensional array
subroutine Put_Real8_3(filename,varname,var,action)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=8), dimension(:,:,:), intent(in)  :: var
  character(len=1), intent(in), optional :: action

  character(len=len(filename)+4) :: flnm
  character(len=1) :: actionin, TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer :: matClose, matPutVariable
  
  integer(kind=4) :: mxGetPr,mxClassIDFromClassName,mxCreateNumericArray

⌨️ 快捷键说明

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