📄 pi_openfile.asv
字号:
function OpenFile(smat,t,dist)
ylbl='Samples';
xlbl='Columns';
if(nargin<=1)
t=[];
dataout=[];
tdat=[];
sampint=[];
dist=[];
val=get(gcbo,'userdata');
elseif(nargin==1)
t=[];
dataout=smat;
tdat=[];
sampint=[];
dist=[];
val={4};
file='Plotimage';
elseif(nargin>=2)
dataout=smat;
if(isempty(t))
tdat=[];
sampint=[];
else
ylbl='Time';
t=t;
sampint=t(2)-t(1);
end
if(isempty(dist))
dist=[];
else
dist=dist;
xlbl='Meters';
end
val={4};
file='Plotimage';
end
lasterr=[];
% Opening Files for Plotimage
global SCALE_OPT NUMBER_OF_COLORS GRAY_PCT CLIP COLOR_MAP NOBRIGHTEN PICKS PICKCOLOR XAXISTOP ZOOM_VALUE ZOOM_LOCKS
global SIESMAT
h=get(gcf,'userdata');
hmsg=h(2);
hscale=h(6);
hclip=h(7);
hmaster=h(10);
hvertscrol=h(16);
hhorscrol=h(17);
hposax=findobj(gcf,'type','axes','tag','POSITIONAXES');
QuickMenu=findobj(gcf,'type','uimenu','tag','QUICK_OPENFILE');
udat=get(QuickMenu,'userdata');
quickhandles=udat{3};
originalpath=udat{4};
lastpath=udat{5};
presentpath=[];
filename=[];
sampint=1;
try
switch round(val{1})
case [1] % opening PRE arranged .mat file
[file,path]=myuifile(gcf,'.mat','Choose .mat file','get');
if(isempty(findstr('.mat',file)))
return % didn't choose a .mat file
end
cd(path);
DataOut=load([path file]);
nms=fieldnames(DataOut);
if(length(nms)>=2)
% not set as SeisStrucutre
DataOut=matinterrogator([path file],[3]);
if(isempty(DataOut))
return
else
DataOut=Check_Data(DataOut);
dataout=DataOut{1};
tdat=DataOut{2};
t=tdat{1};
ylbl=tdat{2};
dist=DataOut{3};
end
else
if(~strcmp(nms,'SeisStruct'))
return
end
SeisStruct=getfield(DataOut,'SeisStruct');
dataout=SeisStruct.data;
t=SeisStruct.t;
samptint=t(2)-t(1);
dist=SeisStruct.x;
end
filename=[path file];
case [2] % opening segy file
[file,path]=myuifile(gcf,'*.*','Choose SEGY file','get');
filename=[path file];
if(filename(1,1)==0)
return
end
if(isempty(findstr('.sgy',file(end-4:end))))
StringInfo=['"' [path file] '" is not a SEGY file.'];
errordlg(StringInfo);
return
end
[dataout,sampint]=altreadsegy([path file]);
case [3] % opening file from menu item
filename=get(gcbo,'label');
try
if(~isempty(findstr('.sgy',filename(end-4:end))))
[dataout,sampint] = altreadsegy(filename);
elseif(~isempty(findstr('.mat',filename(end-4:end))))
DataOut=load([filename]);
nms=fieldnames(DataOut);
if(length(nms)>1)
% not set as SeisStrucutre
DataOut=matinterrogator(filename,[3]);
if(isempty(DataOut))
return
else
DataOut=Check_Data(DataOut);
dataout=DataOut{1};
tdat=DataOut{2};
t=tdat{1};
ylbl=tdat{2};
dist=DataOut{3};
end
else
if(~strcmp(nms,'SeisStruct'))
% SesiStruct's have not been created yet August 8th, 2002
DataOut=Check_Data(DataOut);
dataout=DataOut{1};
tdat=DataOut{2};
t=tdat{1};
ylbl=tdat{2};
dist=DataOut{3};
else
SeisStruct=getfield(DataOut,'SeisStruct');
dataout=SeisStruct.data;
t=SeisStruct.t;
depth=SeisStruct.depth;
t=t(2)-t(1);
dist=SeisStruct.x;
end
end
end
tp=findstr(filename,'\');
file=filename(tp(end)+1:end);
catch
errordlg(lasterr);
end
case 4 % data has been sent via user
% MUST MAKE USER DATA INTO A STRUCTURE!!!!
% field names do not matter due to way data pull appart
DataOut.dataout=dataout;
DataOut.t=t;
DataOut.dist=dist;
DataOut=Check_Data(DataOut);
dataout=DataOut{1};
tdat=DataOut{2};
t=tdat{1};
ylbl=tdat{2};
dist=DataOut{3};
end
set(hscale,'value',[2]);
set(hclip,'value',[11],'visible','off');
% checking data
if(iscomplex(dataout))
questinfo={'Do you want to continue? ',...
'Main array is complex'};
checkwuser=questdlg(questinfo,'Main array has both complex and real parts.',...
'Real','Complex','Cancel','Real');
switch checkwuser
case 'Real'
dataout=real(dataout);
case 'Complex'
dataout=imag(dataout);
case 'Cancel'
stringinfo='Action Canceled';
set(hmsg,'string',stringinfo,'backgroundcolor',[1 1 1]);
return
end
end
if(isempty(dataout)|~isnumeric(dataout)|iscomplex(t)|iscomplex(dist))
lasterr='Neither depth nor distance array should be complex';
if(isempty(dataout))
lasterr='Main array not found';
end
errordlg(lasterr);
return
elseif(isempty(t)|length(t)<=1)
sampint=1;
nrows=size(dataout,1);
t=(0:1:nrows-1)*sampint;
end
ncols=size(dataout,2);
if(isempty(dist))
dist=1:ncols;
else
checkdist=dist(end)-dist(1);
if(checkdist==0)
% something is wrong with the distance
questinfo={'Do you want to continue?',...
'Plotimage will change horizontal sample rate if continueing'};
checkwuser=questdlg(questinfo,'Distance is not consistant',...
'Continue','Change sample rate','Cancel','Coninue');
switch checkwuser
case 'Continue'
dist=1:ncols;
case 'Change sample rate'
masterfig=gcf;
qst={'New Sample Rate'};
a={'1'};
flags=[1];
ansfini=askthingsle(masterfig,qst,a,flags);
if(isempty(ansfini))
stringinfo='Action Canceled';
set(hmsg,'string',stringinfo,'backgroundcolor',[1 1 1]);
return
elseif(~isnumeric(str2num(ansfini{1})))
stringinfo='Need a numberical value for sample rate';
set(hmsg,'string',stringinfo,'backgroundcolor',[1 1 0]);
return
end
dx=str2num(ansfini{1});
dist=[1:dx:ncols-1];
case 'Cancel'
stringinfo='Action Canceled';
set(hmsg,'string',stringinfo,'backgroundcolor',[1 1 1]);
return
end
end
end
nrows=size(dataout,1);
clips=[30 25 20 15 10 9 8 7 6 5 4 3 2 1 .5 .25 .1 .05 .01 .005 .001];
iclip=get(hclip,'userdata');
clip=clips(iclip); %make sure we have a sanctioned value
if(length(dist)>1)
bnds=(max(dist)-min(dist))/(length(dist)+1);
else
bnds=max(dataout-min(dataout))/2;
end
try
load('plotimageproperties.mat');
catch
disp('No properties');
end
if(isempty(NOBRIGHTEN)) nobrighten=0; else nobrighten=NOBRIGHTEN; end
if (isempty(SCALE_OPT)) scaleopt=2; else scaleopt=SCALE_OPT; end %default to max scaling
if (isempty(NUMBER_OF_COLORS)) number_of_colors=64;
else number_of_colors=NUMBER_OF_COLORS; end %default to 64 gray levels
if (isempty(GRAY_PCT)) gray_pct=50; else gray_pct=GRAY_PCT; end %default to 50% gray transition
if (isempty(CLIP)) clip=4; else clip=CLIP; end %default to clip of 4
if (isempty(COLOR_MAP)|strcmp(COLOR_MAP,'seisclrs'))
COLOR_MAP=seisclrs(number_of_colors,gray_pct);
[nkols,m]=size(COLOR_MAP);
else
COLOR_MAP=COLOR_MAP;
cm=get(gcf,'colormap');
[nkols,m]=size(cm);
end
if (isempty(PICKCOLOR))
PICKCOLOR='r';
end
% COLOR_MAP=get(gcf,'colormap');
mxs=full(max(max(abs(dataout))));
%determine clipping
smean=full(mean(mean(dataout)));
stddev=full(sqrt( sum(sum((dataout-smean).^2 ) )...
/prod(size(dataout))));
smean2=smean;
mxs2=mxs;
stddev2=stddev;
ampflag=2;
if(ampflag==2)
global SMEAN STDDEV MXS
SMEAN=smean;
STDDEV=stddev;
MXS=mxs;
elseif(ampflag==3)
global SMEAN STDDEV MXS
smean2=SMEAN;
stddev2=STDDEV;
mxs2=MXS;
end
if( scaleopt ==1) %mean scaling
if(~isnan(clip))
mxsprime=min([smean2+clip*stddev2,mxs2]);
end
mns=-mxsprime;
seis = (dataout -mns)/(mxsprime-mns)*(nkols-1)+1;
clear smat
elseif( scaleopt==2 )
mns=-mxs;
%mns=0;
seis = (dataout -mns)/(mxs-mns)*(nkols-1)+1;
clear dataout
else
error('invalid scaling option');
end
dataout=[];
ix=1:length(dist);
dx=dist(2)-dist(1);
dt=t(2)-t(1);
if(dx~=(dist(3)-dist(2)))
dx=0;
end
if(dt~=(t(3)-t(2)))
dt=0;
end
seis=seis(:,ix);
haxis=findobj(gcf,'type','axes','tag','MAINAXES');
set(gcf,'currentaxes',haxis);
% the image operation completely destroys all data associated with the
% axes in question.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -