自己写的代码1

function [outputArg1,outputArg2] = seak_reliable(ARRFile)
%UNTITLED3 Summary of this function goes here
%   Detailed explanation goes here
fid = fopen( ARRFile, 'r' );	% open the file

if ( fid == -1 )
   error( [ mfilename, ': Arrivals file cannot be opened' ] )
end
   
Pos.freq = fscanf( fid, '%f',  1 );	% acoustic frequency

Nsz     = fscanf( fid, '%i',  1 );	% number of source   depths
Pos.s.z = fscanf( fid, '%f', Nsz );	% source   depths

Nrz     = fscanf( fid, '%i',  1 );	% number of receiver depths
Pos.r.z = fscanf( fid, '%f', Nrz );	% receiver depths

Nrr     = fscanf( fid, '%i',  1 );	% number of receiver ranges
Pos.r.r = fscanf( fid, '%f', Nrr );	% receiver ranges

% pre-allocate memory for the Arr arrivals structure array

Arr = repmat( struct( 'Narr', { int16(0) }, ...
  'A',             { single(1.0i) }, ...
  'delay',         { single(1.0i) }, ...
  'SrcDeclAngle',  { single(0.0) }, ...
  'RcvrDeclAngle', { single(0.0) }, ...
  'NumTopBnc',     { int16(0) }, ...
  'NumBotBnc',     { int16(0) } ), Nrr, Nrz, Nsz );
% loop over sources, rcv depths and rcv ranges to read all arrival info

for isd = 1 : Nsz
  
  % read the maximum number of arrivals for this source
  Narrmx2 = fscanf( fid, '%i', 1 );
  
  for irz = 1 : Nrz
     
     for irr = 1 : Nrr
        
        % read the number of arrivals at this receiver
        Narr = fscanf( fid, '%i', 1 );
        Arr( irr, irz, isd ).Narr = int16( Narr );
        
        % read and store all the arrivals, if there are any
        if Narr > 0
           
           da = single( fscanf( fid, '%f', [ 8, Narr ] ) );
           
           Arr( irr, irz, isd ).A = single( ...
              da( 1, 1 : Narr ) .* exp( 1.0i * da( 2, 1 : Narr ) * pi / 180.0 ) );
           Arr( irr, irz, isd ).delay = single( ...
              da( 3, 1 : Narr ) + 1.0i * da( 4, 1 : Narr ) );
           Arr( irr, irz, isd ).SrcDeclAngle  = da( 5, 1 : Narr );
           Arr( irr, irz, isd ).RcvrDeclAngle = da( 6, 1 : Narr );
           Arr( irr, irz, isd ).NumTopBnc     = int16( da( 7, 1 : Narr ) );
           Arr( irr, irz, isd ).NumBotBnc     = int16( da( 8, 1 : Narr ) );
           
        end	% if any arrivals
        
     end	% next receiver range
     
  end	% next receiver depth
  
end	% next source

for irr = 1:Nrr
    a(irr) = disp(Arr( irr, 1, 1 ).NumTopBnc);  
    numZeros(irr) = sum(a(irr) == 0);
    if numZeros(irr) = 0
        rrange = irr;
    end
% outputArg1 = inputArg1;
% outputArg2 = inputArg2;
    
end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值