0001 function [points,ADC_HADC_cmpts_alldir,ADC_HADC_allcmpts_alldir] ...
0002 = HADC_HARDI(experi_hadc,mymesh,DIFF_cmpts,IC_cmpts)
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 Ncmpt = length(DIFF_cmpts);
0036 [points,C,v] = spheresurface_regularpoints(1,experi_hadc.ngdir_total);
0037 ngdir_total = size(points,1);
0038 ii = find(points(:,3) >= 0);
0039
0040 for j = 1:size(ii,1)
0041 for k = 1:ngdir_total
0042 if (norm(points(j,1:2)-points(k,1:2)) < 1e-10 && points(j,3)+points(k,3) < 1e-10)
0043 negii(ii(j)) = k;
0044 end
0045 end
0046 end
0047 jc = 0;
0048 for ic = 1:size(C,1)
0049 jj = find(C(ic,1) == ii);
0050 kk = find(C(ic,2) == ii);
0051 ll = find(C(ic,3) == ii);
0052 if (~isempty(jj) & ~isempty(kk) & ~isempty(ll))
0053 Ckeep(jc+1,1:3) = C(ic,1:3);
0054 jc = jc+1;
0055 end
0056 end
0057 graddir_index = ii;
0058 ndir = length(graddir_index);
0059 nexperi = length(experi_hadc.sdeltavec);
0060
0061 ADC_HADC_cmpts_alldir = nan*ones(ngdir_total,Ncmpt,nexperi);
0062 ADC_HADC_allcmpts_alldir = nan*ones(ngdir_total,nexperi);
0063 for idir = 1:ndir
0064 experi_hadc.gdir = points(graddir_index(idir),:)';
0065 [ADC_HADC_cmpts,ADC_HADC_allcmpts,HADC_elapsed_time] ...
0066 = HADC(experi_hadc,mymesh,DIFF_cmpts,IC_cmpts);
0067 ADC_HADC_cmpts_alldir(graddir_index(idir),:,:) = ADC_HADC_cmpts;
0068 ADC_HADC_cmpts_alldir(negii(graddir_index(idir)),:,:) = ADC_HADC_cmpts;
0069 ADC_HADC_allcmpts_alldir(graddir_index(idir),:) = ADC_HADC_allcmpts(:,1)';
0070 ADC_HADC_allcmpts_alldir(negii(graddir_index(idir)),:) = ADC_HADC_allcmpts(:,1)';
0071
0072 end
0073 ADC_HADC_cmpts_alldir(find(ADC_HADC_cmpts_alldir==0)) = nan;
0074 ADC_HADC_allcmpts_alldir(find(ADC_HADC_allcmpts_alldir==0)) = nan;