Changeset 515 for trunk/src/proj_field.m
- Timestamp:
- Aug 15, 2012, 11:36:12 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/proj_field.m
r512 r515 84 84 ProjData=[]; 85 85 86 %% case of no projection (object is used only as graph display)87 if isfield(ObjectData,'ProjMode') && (isequal(ObjectData.ProjMode,'none')||isequal(ObjectData.ProjMode,'mask_inside')||isequal(ObjectData.ProjMode,'mask_outside'))86 %% in the absence of object Type or projection mode, or object coordinaes, the output is empty 87 if ~isfield(ObjectData,'Type')||~isfield(ObjectData,'ProjMode') 88 88 return 89 89 end 90 91 %% check coincidence of coordinate units 92 if isfield(FieldData,'CoordUnit') && isfield(ObjectData,'CoordUnit')&&~strcmp(FieldData.CoordUnit,ObjectData.CoordUnit) 93 errormsg='inconsistent coord units for field and projection object'; 90 % case of no projection (object is used only as graph display) 91 if isequal(ObjectData.ProjMode,'none')||isequal(ObjectData.ProjMode,'mask_inside')||isequal(ObjectData.ProjMode,'mask_outside') 94 92 return 95 93 end 96 97 %% in the absence of object Type or projection mode, or object coordinaes, the input field is just tranfered without change 98 if ~isfield(ObjectData,'Type')||~isfield(ObjectData,'ProjMode') 99 ProjData=FieldData; 100 return 101 end 102 if ~isfield(ObjectData,'Coord') 94 if ~isfield(ObjectData,'Coord')||isempty(ObjectData.Coord) 103 95 if strcmp(ObjectData.Type,'plane') 104 96 ObjectData.Coord=[0 0 0];%default 105 97 else 106 ProjData=FieldData;107 98 return 108 99 end 109 100 end 110 111 %% OBSOLETE112 if isfield(ObjectData,'XMax') && ~isempty(ObjectData.XMax)113 ObjectData.RangeX(1)=ObjectData.XMax;114 end115 if isfield(ObjectData,'XMin') && ~isempty(ObjectData.XMin)116 ObjectData.RangeX(2)=ObjectData.XMin;117 end118 if isfield(ObjectData,'YMax') && ~isempty(ObjectData.YMax)119 ObjectData.RangeY(1)=ObjectData.YMax;120 end121 if isfield(ObjectData,'YMin') && ~isempty(ObjectData.YMin)122 ObjectData.RangeY(2)=ObjectData.YMin;123 end124 if isfield(ObjectData,'ZMax') && ~isempty(ObjectData.ZMax)125 ObjectData.RangeZ(1)=ObjectData.ZMax;126 end127 if isfield(ObjectData,'ZMin') && ~isempty(ObjectData.ZMin)128 ObjectData.RangeZ(2)=ObjectData.ZMin;129 end130 %%%%%%%%%%131 101 132 102 %% apply projection depending on the object type … … 401 371 testproj(VarType.color)=1; 402 372 VarIndex=VarIndex(find(testproj(VarIndex)));%select only the projected variables 403 if testX%case of unstructured coordinates373 if check_unstructured%case of unstructured coordinates 404 374 eval(['nbpoint=numel(FieldData.' FieldData.ListVarName{VarIndex(1)} ');']) 405 375 for ivar=[VarIndex VarType.coord_x VarType.coord_y VarType.errorflag] … … 547 517 ProjData.NbDim=1; 548 518 %initialisation of the input parameters and defaultoutput 549 ProjMode='projection';%direct projection on the line by default 550 if isfield(ObjectData,'ProjMode'),ProjMode=ObjectData.ProjMode; end; 519 ProjMode=ObjectData.ProjMode; 551 520 % ProjAngle=90; %90 degrees projection by default 552 521 … … 609 578 continue 610 579 end 611 testX=~isempty(VarType.coord_x) && ~isempty(VarType.coord_y);% test for unstructured coordinates580 check_unstructured=~isempty(VarType.coord_x) && ~isempty(VarType.coord_y);% test for unstructured coordinates 612 581 test_tps=~isempty(VarType.coord_tps); 613 582 testU=~isempty(VarType.vector_x) && ~isempty(VarType.vector_y);% test for vectors … … 631 600 end 632 601 % check needed object properties for unstructured positions (position given by the variables with role coord_x, coord_y 633 if testX602 if check_unstructured 634 603 if ~isequal(ProjMode,'interp') 635 604 if width==0 … … 664 633 %%%%%%% % A FAIRE CALCULER MEAN DES QUANTITES %%%%%% 665 634 %case of unstructured coordinates 666 if testX635 if check_unstructured 667 636 for ip=1:siz_line(1)-1 %Loop on the segments of the polyline 668 637 linelength=sqrt(dlinx(ip)*dlinx(ip)+dliny(ip)*dliny(ip)); … … 917 886 %----------------------------------------------------------------- 918 887 919 %% initialisation of the input parameters of the projection plane920 ProjMode='projection';%direct projection by default921 if isfield(ObjectData,'ProjMode'),ProjMode=ObjectData.ProjMode; end;922 923 %% axis origin924 if isempty(ObjectData.Coord)925 ObjectData.Coord(1,1)=0;%origin of the plane set to [0 0] by default926 ObjectData.Coord(1,2)=0;927 ObjectData.Coord(1,3)=0;928 end929 930 888 %% rotation angles 931 889 PlaneAngle=[0 0 0]; … … 951 909 952 910 %% mesh sizes DX and DY 953 DX= 0;954 DY= 0; %default911 DX=FieldData.Mesh; 912 DY=FieldData.Mesh; %default 955 913 if isfield(ObjectData,'DX') && ~isempty(ObjectData.DX) 956 914 DX=abs(ObjectData.DX);%mesh of interpolation points … … 959 917 DY=abs(ObjectData.DY);%mesh of interpolation points 960 918 end 961 if ~strcmp( ProjMode,'projection') && (DX==0||DY==0)919 if ~strcmp(ObjectData.ProjMode,'projection') && (DX==0||DY==0) 962 920 errormsg='DX or DY missing'; 963 921 display(errormsg) … … 970 928 testYMin=0; 971 929 testYMax=0; 930 XMin=FieldData.XMin;%default 931 XMax=FieldData.XMax;%default 932 YMin=FieldData.YMin;%default 933 YMax=FieldData.YMax;%default 972 934 if isfield(ObjectData,'RangeX') 973 935 XMin=min(ObjectData.RangeX); … … 1003 965 ListIndex={}; 1004 966 1005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1006 967 %% group the variables (fields of 'FieldData') in cells of variables with the same dimensions 1007 %----------------------------------------------------------------- 1008 idimvar=0; 1009 968 % CellVarIndex=cells of variable index arrays 1010 969 [CellVarIndex,NbDimVec,VarTypeCell,errormsg]=find_field_cells(FieldData); 1011 970 if ~isempty(errormsg) … … 1014 973 end 1015 974 975 %% projection modes 976 check_grid=0; 977 ProjMode=cell(size(VarTypeCell)); 978 for icell=1:numel(VarTypeCell)% TODO: recalculate coordinates here to get the bounds in the rotated coordinates 979 ProjMode{icell}=ObjectData.ProjMode; 980 if isfield(VarTypeCell{icell},'FieldRequest') 981 switch VarTypeCell{icell}.FieldRequest 982 case 'interp' 983 ProjMode{icell}='interp'; 984 case 'derivatives' 985 ProjMode{icell}='filter'; 986 end 987 end 988 if strcmp(ProjMode{icell},'interp')||strcmp(ProjMode{icell},'filter') 989 check_grid=1; 990 end 991 end 992 993 %% define the new coordinates in case of interpolation on a grid 994 if check_grid% TODO: recalculate coordinates to get the bounds in the rotated coordinates 995 ProjData.ListVarName={'coord_y','coord_x'}; 996 ProjData.VarDimName={'coord_y','coord_x'}; 997 ProjData.VarAttribute={[],[]}; 998 ProjData.coord_y=[YMin YMax]; 999 ProjData.coord_x=[XMin XMax]; 1000 end 1001 1002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1016 1003 % LOOP ON GROUPS OF VARIABLES SHARING THE SAME DIMENSIONS 1017 1004 % CellVarIndex=cells of variable index arrays … … 1020 1007 nbcoord=0;%number of added coordinate variables brought by projection 1021 1008 nbvar=0; 1009 vector_x_proj=[]; 1010 vector_y_proj=[]; 1022 1011 for icell=1:length(CellVarIndex) 1023 1012 NbDim=NbDimVec(icell); … … 1027 1016 VarIndex=CellVarIndex{icell};% indices of the selected variables in the list FieldData.ListVarName 1028 1017 VarType=VarTypeCell{icell}; 1029 % ivar_X=VarType.coord_x;1030 % ivar_Y=VarType.coord_y;1031 % ivar_Z=VarType.coord_z;1032 1018 ivar_U=VarType.vector_x; 1033 1019 ivar_V=VarType.vector_y; … … 1037 1023 end 1038 1024 ivar_W=VarType.vector_z; 1039 % ivar_Anc=VarType.ancillary;1040 % test_anc=zeros(size(VarIndex));1041 % test_anc(ivar_Anc)=ones(size(ivar_Anc));1042 % ivar_F=VarType.warnflag;1043 % ivar_FF=VarType.errorflag;1044 1025 1045 1026 %type of coordinates … … 1058 1039 end 1059 1040 coord_z=0;%default 1060 1041 1061 1042 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1062 1043 switch CoordType … … 1064 1045 %% case of input fields with unstructured coordinates 1065 1046 case 'unstructured' 1066 if strcmp( ObjectData.ProjMode,'filter')1067 continue %skip for filter (needs tps )1068 end 1069 coord_x=FieldData.(FieldData.ListVarName{VarType.coord_x}); 1070 coord_y=FieldData.(FieldData.ListVarName{VarType.coord_y}); 1047 if strcmp(ProjMode{icell},'filter') 1048 continue %skip for filter (needs tps field cell) 1049 end 1050 coord_x=FieldData.(FieldData.ListVarName{VarType.coord_x});% initial x coordinates 1051 coord_y=FieldData.(FieldData.ListVarName{VarType.coord_y});% initial y coordinates 1071 1052 if ~isempty(VarType.coord_z) 1072 coord_z=FieldData.(FieldData.ListVarName{VarType.coord_z}); 1053 coord_z=FieldData.(FieldData.ListVarName{VarType.coord_z});% initial z coordinates 1073 1054 end 1074 1055 1075 % translate initial coordinates 1056 % translate initial coordinates to account for the new origin 1076 1057 coord_x=coord_x-ObjectData.Coord(1,1); 1077 1058 coord_y=coord_y-ObjectData.Coord(1,2); … … 1085 1066 fieldZ=norm_plane(1)*coord_x + norm_plane(2)*coord_y+ norm_plane(3)*coord_z;% distance to the plane 1086 1067 indcut=find(abs(fieldZ) <= width); 1087 size(indcut)1088 1068 for ivar=VarIndex 1089 1069 VarName=FieldData.ListVarName{ivar}; … … 1096 1076 end 1097 1077 1098 %rotate coordinates if needed: 1078 %rotate coordinates if needed: coord_X,coord_Y= = coordinates in the new plane 1099 1079 Psi=PlaneAngle(1); 1100 1080 Theta=PlaneAngle(2); … … 1104 1084 coord_Y=(-coord_x *sin(Phi) + coord_y *cos(Phi))*cos(Theta); 1105 1085 coord_Y=coord_Y+coord_z *sin(Theta); 1106 coord_X=(coord_X *cos(Psi) - coord_Y* sin(Psi));%A VERIFIER 1107 1086 coord_X=(coord_X *cos(Psi) - coord_Y* sin(Psi));%A VERIFIER 1108 1087 coord_Y=(coord_X *sin(Psi) + coord_Y* cos(Psi)); 1109 1088 else … … 1112 1091 end 1113 1092 1114 %restriction to the range of x and y if imposed1093 %restriction to the range of X and Y if imposed by the projection object 1115 1094 testin=ones(size(coord_X)); %default 1116 1095 testbound=0; … … 1139 1118 for ivar=VarIndex 1140 1119 VarName=FieldData.ListVarName{ivar}; 1141 eval(['FieldData.' VarName '=FieldData.' VarName '(indcut);'])1120 FieldData.(VarName)=FieldData.(VarName)(indcut); 1142 1121 end 1143 1122 coord_X=coord_X(indcut); … … 1149 1128 1150 1129 % different cases of projection 1151 switch ObjectData.ProjMode 1152 case 'projection' 1130 switch ProjMode{icell} 1131 case 'projection' 1132 nbvar=numel(ProjData.ListVarName); 1153 1133 for ivar=VarIndex %transfer variables to the projection plane 1154 1134 VarName=FieldData.ListVarName{ivar}; … … 1172 1152 coord_x_proj=XMin:DX:XMax; 1173 1153 coord_y_proj=YMin:DY:YMax; 1174 DimCell={'coord_y','coord_x'}; 1175 ProjData.ListVarName={'coord_y','coord_x'}; 1176 ProjData.VarDimName={'coord_y','coord_x'}; 1177 nbcoord=2; 1178 ProjData.coord_y=[YMin YMax]; 1179 ProjData.coord_x=[XMin XMax]; 1180 % if isempty(ivar_X), ivar_X=0; end; 1181 % if isempty(ivar_Y), ivar_Y=0; end; 1182 % if isempty(ivar_Z), ivar_Z=0; end; 1183 % if isempty(ivar_U), ivar_U=0; end; 1184 % if isempty(ivar_V), ivar_V=0; end; 1185 % if isempty(ivar_W), ivar_W=0; end; 1186 % if isempty(ivar_F), ivar_F=0; end; 1187 % if isempty(ivar_FF), ivar_FF=0; end; 1188 % if ~isequal(ivar_FF,0) 1189 if ~isempty(VarType.errorflag) 1154 [XI,YI]=meshgrid(coord_x_proj,coord_y_proj); 1155 if ~isempty(VarType.errorflag) 1190 1156 VarName_FF=FieldData.ListVarName{VarType.errorflag}; 1191 1157 indsel=find(FieldData.(VarName_FF)==0); … … 1193 1159 coord_Y=coord_Y(indsel); 1194 1160 end 1195 1196 FF=zeros(1,length(coord_y_proj)*length(coord_x_proj));1197 1161 testFF=0; 1198 %for ivar=VarIndex % loop on field variables to project 1199 for ivar=[VarType.scalar VarType.vector_x VarType.vector_y] 1200 VarName=FieldData.ListVarName{ivar}; 1201 % if ~( ivar==ivar_X || ivar==ivar_Y || ivar==ivar_Z || ivar==ivar_F || ivar==ivar_FF ||... 1202 % ( numel(test_anc)>=ivar && test_anc(ivar)==1)) 1203 ivar_new=ivar_new+1; 1204 ProjData.ListVarName=[ProjData.ListVarName {VarName}]; 1205 ProjData.VarDimName=[ProjData.VarDimName {DimCell}]; 1206 if isfield(FieldData,'VarAttribute') && length(FieldData.VarAttribute) >=ivar 1207 ProjData.VarAttribute{ivar_new+nbcoord}=FieldData.VarAttribute{ivar}; 1208 end 1209 %if ~isequal(ivar_FF,0) 1210 if ~isempty(VarType.errorflag) 1211 FieldData.(VarName)=FieldData.(VarName)(indsel); 1212 end 1213 ProjData.(VarName)=griddata_uvmat(double(coord_X),double(coord_Y),double(FieldData.(VarName)),coord_x_proj,coord_y_proj'); 1214 varline=reshape(ProjData.(VarName),1,length(coord_y_proj)*length(coord_x_proj)); 1215 FFlag= isnan(varline); %detect undefined values NaN 1216 indnan=find(FFlag); 1217 if~isempty(indnan) 1218 varline(indnan)=zeros(size(indnan)); 1219 ProjData.(VarName)=reshape(varline,length(coord_y_proj),length(coord_x_proj)); 1220 FF(indnan)=ones(size(indnan)); 1221 testFF=1; 1222 end 1223 if ivar==ivar_U 1224 ivar_U=ivar_new; 1225 end 1226 if ivar==ivar_V 1227 ivar_V=ivar_new; 1228 end 1229 if ivar==ivar_W 1230 ivar_W=ivar_new; 1231 end 1232 % end 1233 end 1234 if testFF 1235 ProjData.FF=reshape(FF,length(coord_y_proj),length(coord_x_proj)); 1236 ProjData.ListVarName=[ProjData.ListVarName {'FF'}]; 1237 ProjData.VarDimName=[ProjData.VarDimName {DimCell}]; 1238 ProjData.VarAttribute{ivar_new+1+nbcoord}.Role='errorflag'; 1239 end 1240 % case 'filter'%interpolate data on a regular grid 1241 % errormsg='tps required for filter option' 1242 1243 end 1244 1245 %% case of tps interpolation (applies only in filter mode) 1162 nbvar=numel(ProjData.ListVarName); 1163 if isfield(VarType,'vector_x')&&isfield(VarType,'vector_y')&&~isempty(VarType.vector_x) 1164 VarName_x=FieldData.ListVarName{VarType.vector_x}; 1165 VarName_y=FieldData.ListVarName{VarType.vector_y}; 1166 if ~isempty(VarType.errorflag) 1167 FieldData.(VarName_x)=FieldData.(VarName_x)(indsel); 1168 FieldData.(VarName_y)=FieldData.(VarName_y)(indsel); 1169 end 1170 FieldVar=cat(2,FieldData.(VarName_x),FieldData.(VarName_y)); 1171 if ~isfield(VarType,'CheckSub') || ~VarType.CheckSub 1172 vector_x_proj=numel(ProjData.ListVarName)+1; 1173 vector_y_proj=numel(ProjData.ListVarName)+2; 1174 end 1175 end 1176 if ~isempty(VarType.scalar) 1177 VarName_scalar=FieldData.ListVarName{VarType.scalar}; 1178 if ~isempty(VarType.errorflag) 1179 FieldData.(VarName_scalar)=FieldData.(VarName_scalar)(indsel); 1180 end 1181 FieldVar=FieldData.(VarName_scalar); 1182 end 1183 [VarVal,ListFieldProj,VarAttribute,errormsg]=calc_field_interp([coord_X coord_Y],FieldVar,VarType.Operation,XI,YI); 1184 if isfield(VarType,'CheckSub') && VarType.CheckSub && ~isempty(vector_x_proj) 1185 ProjData.(ProjData.ListVarName{vector_x_proj})=ProjData.(ProjData.ListVarName{vector_x_proj})-VarVal{1}; 1186 ProjData.(ProjData.ListVarName{vector_y_proj})=ProjData.(ProjData.ListVarName{vector_y_proj})-VarVal{2}; 1187 else 1188 VarDimName=cell(size(ListFieldProj)); 1189 for ilist=1:numel(ListFieldProj)% reshape data, excluding coordinates (ilist=1-2), TODO: rationalise 1190 ListFieldProj{ilist}=regexprep(ListFieldProj{ilist},'(.+',''); 1191 if ~isempty(find(strcmp(ListFieldProj{ilist},ProjData.ListVarName))) 1192 ListFieldProj{ilist}=[ListFieldProj{ilist} '_1']; 1193 end 1194 ProjData.(ListFieldProj{ilist})=VarVal{ilist}; 1195 VarDimName{ilist}={'coord_y','coord_x'}; 1196 end 1197 ProjData.ListVarName=[ProjData.ListVarName ListFieldProj]; 1198 ProjData.VarDimName=[ProjData.VarDimName VarDimName]; 1199 ProjData.VarAttribute=[ProjData.VarAttribute VarAttribute]; 1200 end 1201 end 1202 1203 %% case of tps interpolation (applies only in filter mode and for spatial derivatives) 1246 1204 case 'tps' 1247 if strcmp(ObjectData.ProjMode,'filter') 1205 if strcmp(ProjMode{icell},'filter') 1206 Coord=FieldData.(FieldData.ListVarName{VarType.coord_tps}); 1207 NbSites=FieldData.(FieldData.ListVarName{VarType.nbsites_tps}); 1208 SubRange=FieldData.(FieldData.ListVarName{VarType.subrange_tps}); 1209 if isfield(VarType,'vector_x_tps')&&isfield(VarType,'vector_y_tps') 1210 FieldVar=cat(3,FieldData.(FieldData.ListVarName{VarType.vector_x_tps}),FieldData.(FieldData.ListVarName{VarType.vector_y_tps})); 1211 end 1248 1212 coord_x_proj=XMin:DX:XMax; 1249 1213 coord_y_proj=YMin:DY:YMax; … … 1253 1217 XI=XI+ObjectData.Coord(1,1); 1254 1218 YI=YI+ObjectData.Coord(1,2); 1255 DataOut=calc_field(FieldData.FieldList,FieldData,cat(3,XI,YI)); 1256 ProjData.ListVarName=[ProjData.ListVarName DataOut.ListVarName]; 1257 ProjData.VarDimName=[ProjData.VarDimName DataOut.VarDimName]; 1258 ProjData.VarAttribute=[ProjData.VarAttribute DataOut.VarAttribute]; 1259 for ilist=1:length(DataOut.ListVarName)% reshape data, excluding coordinates (ilist=1-2), TODO: rationalise 1260 VarName=DataOut.ListVarName{ilist}; 1261 % ProjData.(VarName)=DataOut.(VarName); 1262 if ilist>=3 1263 ProjData.(VarName)=reshape(DataOut.(VarName),np_y,np_x); 1264 end 1265 end 1266 ProjData.coord_x=[XMin XMax]; 1267 ProjData.coord_y=[YMin YMax]; 1219 [DataOut,VarAttribute,errormsg]=calc_field_tps(Coord,NbSites,SubRange,FieldVar,VarType.Operation,cat(3,XI,YI)); 1220 ListFieldProj=(fieldnames(DataOut))'; 1221 VarDimName=cell(size(ListFieldProj)); 1222 for ilist=1:numel(ListFieldProj)% reshape data, excluding coordinates (ilist=1-2), TODO: rationalise 1223 VarName=ListFieldProj{ilist}; 1224 ProjData.(VarName)=DataOut.(VarName); 1225 VarDimName{ilist}={'coord_y','coord_x'}; 1226 end 1227 % if ~isfield(ProjData,'coord_x') 1228 % ProjData.coord_x=[XMin XMax]; 1229 % ProjData.coord_y=[YMin YMax]; 1230 % ListFieldProj=[{'coord_x','coord_y'} ListFieldProj']; 1231 % VarDimName=[{'coord_x','coord_y'} VarDimName]; 1232 % VarAttribute=[{[],[]} VarAttribute]; 1233 % end 1234 ProjData.ListVarName=[ProjData.ListVarName ListFieldProj]; 1235 ProjData.VarDimName=[ProjData.VarDimName VarDimName]; 1236 ProjData.VarAttribute=[ProjData.VarAttribute VarAttribute]; 1268 1237 end 1269 1238 … … 1272 1241 1273 1242 VarName=FieldData.ListVarName{VarIndex(1)};%get the first variable of the cell to get the input matrix dimensions 1274 eval(['DimValue=size(FieldData.' VarName ');'])%input matrix dimensions1243 DimValue=size(FieldData.(VarName));%input matrix dimensions 1275 1244 DimValue(DimValue==1)=[];%remove singleton dimensions 1276 1245 NbDim=numel(DimValue);%update number of space dimensions … … 1405 1374 end 1406 1375 % case with no interpolation 1407 if isequal(ProjMode ,'projection') && (~testangle || test90y || test90x)1376 if isequal(ProjMode{icell},'projection') && (~testangle || test90y || test90x) 1408 1377 if NbDim==2 && ~testXMin && ~testXMax && ~testYMin && ~testYMax 1409 ProjData=FieldData;% no change by projection 1378 ProjData.ListVarName=[ProjData.ListVarName FieldData.ListVarName(VarIndex)]; 1379 ProjData.VarDimName=[ProjData.VarDimName FieldData.VarDimName(VarIndex)]; 1380 ProjData.VarAttribute=[ProjData.VarAttribute FieldData.VarAttribute(VarIndex)]; 1381 ProjData.(AYProjName)=FieldData.(AYName); 1382 ProjData.(AXProjName)=FieldData.(AXName); 1383 for ivar=VarIndex 1384 VarName=FieldData.ListVarName{ivar}; 1385 ProjData.(VarName)=FieldData.(VarName);% no change by projection 1386 end 1410 1387 else 1411 1388 indY=NbDim-1; … … 1489 1466 YIMA=reshape(round(YIMA),1,npX*npY); 1490 1467 flagin=XIMA>=1 & XIMA<=DimValue(2) & YIMA >=1 & YIMA<=DimValue(1);%flagin=1 inside the original image 1491 if isequal( ObjectData.ProjMode,'filter')1468 if isequal(ProjMode{icell},'filter') 1492 1469 npx_filter=ceil(abs(DX/DAX)); 1493 1470 npy_filter=ceil(abs(DY/DAY)); … … 1581 1558 end 1582 1559 1560 % %prepare substraction in case of two input fields 1561 % SubData.ListVarName={}; 1562 % SubData.VarDimName={}; 1563 % SubData.VarAttribute={}; 1564 % check_remove=zeros(size(ProjData.ListVarName)); 1565 % for iproj=1:numel(ProjData.VarAttribute) 1566 % if isfield(ProjData.VarAttribute{iproj},'CheckSub')&&isequal(ProjData.VarAttribute{iproj}.CheckSub,1) 1567 % VarName=ProjData.ListVarName{iproj}; 1568 % SubData.ListVarName=[SubData.ListVarName {VarName}]; 1569 % SubData.VarDimName=[SubData.VarDimName ProjData.VarDimName{iproj}]; 1570 % SubData.VarAttribute=[SubData.VarAttribute ProjData.VarAttribute{iproj}]; 1571 % SubData.(VarName)=ProjData.(VarName); 1572 % check_remove(iproj)=1; 1573 % end 1574 % end 1575 % if ~isempty(find(check_remove)) 1576 % ind_remove=find(check_remove); 1577 % ProjData.ListVarName(ind_remove)=[]; 1578 % ProjData.VarDimName(ind_remove)=[]; 1579 % ProjData.VarAttribute(ind_remove)=[]; 1580 % ProjData=sub_field(ProjData,[],SubData); 1581 % end 1582 1583 1583 %----------------------------------------------------------------- 1584 1584 %projection in a volume … … 1586 1586 %----------------------------------------------------------------- 1587 1587 ProjData=FieldData;%default output 1588 1589 %% initialisation of the input parameters of the projection plane1590 ProjMode='projection';%direct projection by default1591 if isfield(ObjectData,'ProjMode'),ProjMode=ObjectData.ProjMode; end;1592 1588 1593 1589 %% axis origin
Note: See TracChangeset
for help on using the changeset viewer.