亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? util.c

?? 干涉合成孔徑雷達成像的相位解纏的枝切法程序。
?? C
字號:
/*
 * util.c -- utility Functions: I/O, memory, etc.
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "pi.h"
#include "file.h"
#include "util.h"

/* Print error message and exit */
void ErrorHandler(char *msg, char *item, int code)
{
  fprintf(stderr, "%s\nItem: %s\n", msg, item);
  exit(code);
}

/* open the file */
void OpenFile(FILE **fp, char *name, char *mode)
{
  if ((*fp = fopen(name, mode))==NULL) 
    ErrorHandler("Cannot open file", name, FILE_OPEN_ERROR);
}

/* Search for the keyword in the string. If present, return 1. */
int Keyword(char *string, char *keyword)
{
  int  i, lenstr, lenkey;
  char str[500], key[500];
  lenstr = strlen(string);
  lenkey = strlen(keyword);
  if (lenstr != lenkey) return 0;
  str[lenstr] = key[lenstr] = 0;
  for (i=0; i<=lenstr; i++) 
    str[i] = tolower(string[i]);
  for (i=0; i<=lenstr; i++) 
    key[i] = tolower(keyword[i]);
  return (!strcmp(str, key));
}

/* Allocate array of bytes and initialize to zero. */
void AllocateByte(unsigned char **ptr, int len, char *name)
{
  int i;
  *ptr = (unsigned char *) malloc(len*sizeof(unsigned char));
  if ((*ptr)==NULL) 
    ErrorHandler("Cannot allocate memory", name,
                 MEMORY_ALLOCATION_ERROR);
  for (i=0; i<len; i++) (*ptr)[i] = 0;
}

/* Allocate array of short integers  and initialize to zero. */
void AllocateShort(short **ptr, int len, char *name)
{
  int i;
  *ptr = (short *) malloc(len*sizeof(short));
  if ((*ptr)==NULL) 
    ErrorHandler("Cannot allocate memory", name,
                 MEMORY_ALLOCATION_ERROR);
  for (i=0; i<len; i++) (*ptr)[i] = 0;
}
 
/* Allocate array of integers and initialize to zero. */
void AllocateInt(int **ptr, int len, char *name)
{
  int i;
  *ptr = (int *) malloc(len*sizeof(int));
  if ((*ptr)==NULL) 
    ErrorHandler("Cannot allocate memory", name, 
                 MEMORY_ALLOCATION_ERROR);
  for (i=0; i<len; i++) (*ptr)[i] = 0;
}
 
/* Allocate array of floats and initialize to zero. */
void AllocateFloat(float **ptr, int len, char *name)
{
  int i;
  *ptr = (float *) malloc(len*sizeof(float));
  if ((*ptr)==NULL) 
    ErrorHandler("Cannot allocate memory", name,
                 MEMORY_ALLOCATION_ERROR);
  for (i=0; i<len; i++) (*ptr)[i] = 0.0;
}

/* Allocate array of doubles and initialize to zero. */
void AllocateDouble(double **ptr, int len, char *name)
{
  int i;
  *ptr = (double *) malloc(len*sizeof(double));
  if ((*ptr)==NULL) 
    ErrorHandler("Cannot allocate memory", name, 
                 MEMORY_ALLOCATION_ERROR);
  for (i=0; i<len; i++) (*ptr)[i] = 0.0;
}

/* Read array of bytes */
void ReadByte(FILE *fp, unsigned char *data, int len, char *name)
{
  if (len != fread(data, sizeof(unsigned char), len, fp)) 
    ErrorHandler("File read error", name, FILE_READ_ERROR);
  fclose(fp);
}
 
/* Read array of short integers */
void ReadShort(FILE *fp, short *data, int len, char *name)
{
  if (len != fread(data, sizeof(short), len, fp))
    ErrorHandler("File read error", name, FILE_READ_ERROR);
  fclose(fp);
}
 
/* Read array of integers */
void ReadInt(FILE *fp, int *data, int len, char *name)
{
  if (len != fread(data, sizeof(int), len, fp))
    ErrorHandler("File read error", name, FILE_READ_ERROR);
  fclose(fp);
}
 
/* Read array of floats */
void ReadFloat(FILE *fp, float *data, int len, char *name)
{
  if (len != fread(data, sizeof(float), len, fp)) 
    ErrorHandler("File read error", name, FILE_READ_ERROR);
  fclose(fp);
}

/* Read array of double-precision floats */
void ReadDouble(FILE *fp, double *data, int len, char *name)
{
  if (len != fread(data, sizeof(double), len, fp)) 
    ErrorHandler("File read error", name, FILE_READ_ERROR);
  fclose(fp);
}
 
/* Write array of bytes */
void WriteByte(FILE *fp, unsigned char *data, int len, char *name)
{
  if (len != fwrite(data, sizeof(unsigned char), len, fp)) 
    ErrorHandler("File write error", name, FILE_WRITE_ERROR);
  fclose(fp);
}

/* Write array of short integers */
void WriteShort(FILE *fp, short *data, int len, char *name)
{
  if (len != fwrite(data, sizeof(short), len, fp)) 
    ErrorHandler("File write error", name, FILE_WRITE_ERROR);
  fclose(fp);
}

/* Write array of integers */
void WriteInt(FILE *fp, int *data, int len, char *name)
{
  if (len != fwrite(data, sizeof(int), len, fp)) 
    ErrorHandler("File write error", name, FILE_WRITE_ERROR);
  fclose(fp);
}

/* Write array of floats */
void WriteFloat(FILE *fp, float *data, int len, char *name)
{
  if (len != fwrite(data, sizeof(float), len, fp)) 
    ErrorHandler("File write error", name, FILE_WRITE_ERROR);
  fclose(fp);
}

/* Write array of doubles */
void WriteDouble(FILE *fp, double *data, int len, char *name)
{
  if (len != fwrite(data, sizeof(double), len, fp)) 
    ErrorHandler("File write error", name, FILE_WRITE_ERROR);
  fclose(fp);
}

/* Save an array of bytes in a file.  If neg = 1, reverse   */
/* the values (like photographic negative).  If binary = 1, */
/* save values as 0's and 255's (black and white binary     */
/* image).  If mask_code is not 0, then ignore the pixels   */
/* that are marked with the bits defined by mask_code.      */
void SaveByteToImage(unsigned char *im, char *what, char *filename,
           int xsize, int ysize, int neg, int binary, int mask_code)
{
  int  k;
  FILE *fp;
  unsigned char *out, mask;
  printf("Saving %s to file %s\n", what, filename);
  AllocateByte(&out, xsize*ysize, "byte array");
  mask = (mask_code) ? mask_code : 0xFF;     /* bits all 1's */
  for (k=0; k<xsize*ysize; k++) {
    if (binary)
      out[k] = ((neg && !(im[k]&mask)) 
                       || (!neg && (im[k]&mask))) ? 255 : 0;
    else
      out[k] = (neg) ? 255 - (im[k]&mask) : (im[k]&mask);
  }
  OpenFile(&fp, filename, "w");
  WriteByte(fp, out, xsize*ysize, filename);
  free(out);
}

/* Scale the floating-point array to 0-255 (byte array),    */
/* and then save values in a file.  If neg = 1, reverse     */
/* the values (like photographic negative).  If binary = 1, */
/* save values as 0's and 255's (black and white binary     */
/* image).  If logflag = 1, then perform a log-linear       */
/* scaling on the data (useful for "brightening" images).   */
void SaveFloatToImage(float *data, char *what, char *filename,
           int xsize, int ysize, int neg, int binary, int logflag)
{
  int  k;
  unsigned char *im;
  double  r, rmin, rmax, rscale;
  AllocateByte(&im, xsize*ysize, "byte array");
  for (rmin=1.0e+10, rmax=-1.0e+10, k=0; k<xsize*ysize; k++) {
    if (rmin > data[k]) rmin = data[k];
    if (rmax < data[k]) rmax = data[k];
  }
  if (logflag)
    r = (rmin==rmax) ? 1.0 : 255.0/log(1.0 + rmax - rmin);
  else
    r = (rmin==rmax) ? 1.0 : 255.0/(rmax - rmin);
  printf("Min & max of %s = %lf %lf\n", what, rmin, rmax);
  for (k=0; k<xsize*ysize; k++) 
    im[k] = (logflag) ? r*log(1.0 + data[k] - rmin) 
                                    : r*(data[k] - rmin);
  SaveByteToImage(im, what, filename, xsize, ysize, neg, binary, 0);
  free(im);
}

/* Averages byte values and scale from 0-255 to 0-1.  Store      */
/* results in array "out".  tsize is size of averaging template. */
void AverageByteToFloat(unsigned char *in, float *out, int tsize,
                        int xsize, int ysize)
{
  int  hs, i, j, n, ii, jj, c, sum;
  double  scale=1.0/255.0;
  hs = tsize/2;
  for (j=0; j<ysize; j++) {
    for (i=0; i<xsize; i++) {
      for (n=0, sum=0.0, jj=j-hs; jj<=j+hs; jj++) {
        if (jj < 0 || jj > ysize - 1) continue;
        for (ii=i-hs; ii<=i+hs; ii++) {
          if (ii < 0 || ii > xsize - 1) continue;
          c = in[jj*xsize + ii];
          sum += c;
          ++n;
        }
      }
      out[j*xsize + i] = scale*sum/n;
    }
  }
}

/* Search for the keyword "key" in the command line arguments, */
/* then read the value into the variable pointed to by ptr.    */
/* If required = 1, exit if the parameter is not found.  Print */
/* the string "usage" in this case before exiting.             */
int CommandLineParm(int argc, char *argv[], char *key, 
  CommandLineParmType type, void *ptr, int required, char *usage)
{
  int  i, found=0;
  for (i=1; i<argc; i++) {
    if (Keyword(argv[i], key)) {
      if (i < argc - 1) {
        found = 1;
        if (type==IntegerParm) 
          sscanf(argv[i+1], "%d", (int *)ptr);
        else if (type==FloatParm) 
          sscanf(argv[i+1], "%f", (float *)ptr);
        else if (type==DoubleParm) 
          sscanf(argv[i+1], "%lf", (double *)ptr);
        else if (type==StringParm) 
          sscanf(argv[i+1], "%s", (char *)ptr);
        break;
      }
      else {
        fprintf(stderr, "Missing parameter value for %s\n",
                argv[i]);
        fprintf(stderr, "%s", usage);
        exit(BAD_USAGE);
      }
    }
  }
  if (required && !found) {
    fprintf(stderr, "Required parameter missing: %s\n", key);
    fprintf(stderr, "%s", usage);
    exit(BAD_USAGE);
  }
  return found;
}

/* Compute and print the min & max of the array "soln". */
void PrintMinAndMax(int w, int h, float *soln, char *keyword)
{
  int   i, j;
  float rmin, rmax;
  printf("Finding min, max of %s...", keyword);
  rmin = rmax = soln[0];
  for (j=0; j<w*h; j++) {
    if (soln[j] > rmax) rmax = soln[j];
    if (soln[j] < rmin) rmin = soln[j];
  }
  printf("Min %f, max %f\n", rmin, rmax);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡三卡四卡| 欧美国产日韩亚洲一区| 精品国产乱码久久久久久久| 国产欧美一区二区三区在线看蜜臀 | 国产日本一区二区| 亚洲综合一区在线| 国产在线视频不卡二| 色嗨嗨av一区二区三区| 精品捆绑美女sm三区| 亚洲精品国产高清久久伦理二区| 日本不卡1234视频| 91网上在线视频| 欧美不卡在线视频| 一区二区三区毛片| 不卡一区中文字幕| 91精品一区二区三区在线观看| 日本一区二区免费在线 | 国产亚洲va综合人人澡精品| 亚洲国产成人高清精品| 国产成人精品网址| 日韩女优制服丝袜电影| 一区二区三区四区精品在线视频| 国内精品伊人久久久久av影院 | 亚洲欧美成aⅴ人在线观看| 麻豆成人综合网| 欧美色图天堂网| 国产精品久久久久四虎| 久久99国内精品| 91精品福利视频| 亚洲国产精品高清| 国产精品一区二区黑丝| 欧美大胆人体bbbb| 日韩高清欧美激情| 欧美巨大另类极品videosbest | 欧美日本一区二区三区| 亚洲三级在线观看| 暴力调教一区二区三区| 欧美国产欧美综合| 国产成人在线免费观看| 精品国产精品网麻豆系列| 男女激情视频一区| 欧美一级片在线观看| 香蕉久久一区二区不卡无毒影院| 在线欧美日韩国产| 亚洲制服丝袜av| 色哟哟一区二区| 中文字幕在线一区| zzijzzij亚洲日本少妇熟睡| 欧美激情一区二区三区四区 | 美国毛片一区二区三区| 日韩亚洲欧美综合| 久久精品国产**网站演员| 日韩三级免费观看| 久久国产尿小便嘘嘘| 久久婷婷久久一区二区三区| 国产精品系列在线观看| 久久精品亚洲国产奇米99| 成人午夜电影久久影院| 《视频一区视频二区| 色婷婷久久久久swag精品| 亚洲一区二区欧美日韩| 91精品国产乱码久久蜜臀| 久久99久久久久久久久久久| 久久只精品国产| www.性欧美| 亚洲图片欧美色图| 日韩欧美高清一区| 成人免费毛片片v| 又紧又大又爽精品一区二区| 欧美久久久久久蜜桃| 精品一区二区三区免费| 中文字幕欧美国产| 色妹子一区二区| 午夜a成v人精品| 2023国产精品视频| 日本精品一级二级| 美女视频免费一区| 日本一区二区免费在线 | 国产成人亚洲综合a∨婷婷图片| 国产精品久久久久久妇女6080| 色香色香欲天天天影视综合网| 午夜精品一区二区三区电影天堂 | 午夜婷婷国产麻豆精品| 精品国产不卡一区二区三区| www.欧美亚洲| 美女视频黄频大全不卡视频在线播放| 国产欧美精品一区二区色综合| 色av一区二区| 狠狠色丁香九九婷婷综合五月| 亚洲丝袜美腿综合| 欧美精品一区二区三区蜜桃| 在线视频中文字幕一区二区| 久久精品国产亚洲aⅴ| 亚洲激情一二三区| 久久久久一区二区三区四区| 欧美又粗又大又爽| 粉嫩av一区二区三区| 婷婷一区二区三区| 中文字幕一区二区日韩精品绯色| 日韩精品一区二区三区四区视频 | 亚洲国产美女搞黄色| 久久久国际精品| 欧美午夜一区二区三区免费大片| 国产精品一区二区三区四区| 日韩电影在线一区二区三区| 18涩涩午夜精品.www| 久久久三级国产网站| 欧美高清视频在线高清观看mv色露露十八| 国产91色综合久久免费分享| 日韩高清在线电影| 亚洲成人自拍偷拍| 亚洲日本免费电影| 国产精品乱人伦中文| 久久综合色天天久久综合图片| 欧美日韩精品福利| 在线精品视频免费播放| 波多野结衣精品在线| 国产99精品视频| 久久激五月天综合精品| 天天射综合影视| 亚洲一区二区三区四区在线观看 | 国产精品久久久久久久久搜平片| 精品国产成人系列| 欧美成人乱码一区二区三区| 欧美老女人第四色| 337p亚洲精品色噜噜| 欧美日韩精品欧美日韩精品| 欧美撒尿777hd撒尿| 91丨porny丨最新| 成人激情小说乱人伦| 国产一区不卡视频| 国产麻豆精品一区二区| 国产毛片精品视频| 国产在线精品视频| 国产乱妇无码大片在线观看| 国产精品自在在线| 国产91丝袜在线播放| 成年人网站91| 一本久久a久久精品亚洲| 色婷婷综合久久久久中文一区二区 | 欧美亚洲综合在线| 欧美性淫爽ww久久久久无| 在线观看视频一区二区欧美日韩| 日本精品视频一区二区三区| 欧美日韩在线不卡| 欧美一区二区三区在线| 欧美精品一区二| 久久久影视传媒| 国产女主播一区| 亚洲欧洲中文日韩久久av乱码| 亚洲精品午夜久久久| 婷婷夜色潮精品综合在线| 奇米四色…亚洲| 国产原创一区二区三区| 国产精品一区二区你懂的| 91麻豆精品一区二区三区| 在线免费一区三区| 精品久久人人做人人爰| 中文字幕在线观看一区| 亚洲一区二区欧美激情| 久久99精品国产| 97精品国产露脸对白| 欧美疯狂性受xxxxx喷水图片| 欧美va亚洲va在线观看蝴蝶网| 国产精品女主播av| 三级欧美在线一区| 国产.欧美.日韩| 欧美人xxxx| 国产精品午夜在线观看| 日韩国产欧美视频| 91一区二区在线观看| 日韩精品资源二区在线| 亚洲欧美福利一区二区| 国精品**一区二区三区在线蜜桃 | 国产一区二区中文字幕| av不卡免费在线观看| 欧美一区二区视频在线观看| 国产精品福利一区二区三区| 视频在线观看91| 99久久综合色| 精品久久久影院| 亚洲最新视频在线播放| 国产乱人伦精品一区二区在线观看| 欧美亚洲国产怡红院影院| 2022国产精品视频| 日日骚欧美日韩| 91免费小视频| 久久久99久久精品欧美| 日产欧产美韩系列久久99| 色哟哟一区二区在线观看| 久久久综合网站| 午夜久久电影网| 91视频在线看| 久久综合久久综合久久| 成人午夜激情影院| 91精品国模一区二区三区| 成人免费在线视频观看| 国产毛片精品视频| 精品卡一卡二卡三卡四在线| 视频一区中文字幕|