function [simDsf, simSsf, features1 features2] = example2(numFeaturePairs, typeDistribution, inputsDistrib, typeSim, simInputs) % Create feature arrays from 2 different classes, and calculate pairwise % similarities. % Inputs: % 1. numFeaturePairs: number of feature arrays from each class % 2. typeDistribution: the distribution used to generate the feature % matrices ("mean", "mutEx", "exp", "zipf") % 3. inputsDistrib: array of inputs to the distribution % 4. typeSim: type of similarity metric ("lin", "counting", "re") % 5. simInputs: inputs needed by the similarity metric switch(typeDistribution) case 'mean' mean1 = inputsDistrib(1); mean2 = inputsDistrib(2); p1 = inputsDistrib(3); p2 = inputsDistrib(4); for i=1:numFeaturePairs [features1(i,:) features2(i,:)] = simMean(mean1, mean2, p1, p2); end case 'mutEx' dim = inputsDistrib(1); p = inputsDistrib(2); for i=1:numFeaturePairs [features1(i,:) features2(i,:) classOne classTwo] = simMutuallyExclusive(dim, p); end case 'exp' dim = inputsDistrib(1); gamma = inputsDistrib(2); lambda = inputsDistrib(3); for i=1:numFeaturePairs [features1(i,:),features2(i,:)] = simExp(dim, gamma, lambda); end case 'zipf' dim = inputsDistrib(1); s = inputsDistrib(2); for i=1:numFeaturePairs [f1 f2] = simZipf(dim, s); features1(i,:) = f1; features2(i,:) = f2; end otherwise disp('Invalid distribution') return end switch(typeSim) case 'lin' for i=1:numFeaturePairs [AintersectB AnotB BnotA] = featurescomp(features1(i,:), features2(i,:)); probAintersectB = calcTrueProbIntersect(AintersectB, typeDistribution, 0, ... inputsDistrib); [probAnotB] = calcTrueProbExclusive('A', AnotB, typeDistribution, 0, inputsDistrib); [probBnotA] = calcTrueProbExclusive('B', BnotA, typeDistribution, 0, inputsDistrib); disp('probAintersectB'); disp(probAintersectB); disp('probAnotB'); disp(probAnotB); disp('probBnotA'); disp(probBnotA); [simDsf(i)] = simLin(probAintersectB, probAnotB, probBnotA); simSsf(i)=0; end case 'counting' for i=1:numFeaturePairs [AintersectB AnotB BnotA] = featurescomp(features1(i,:), features2(i,:)); disp('AintersectB'); disp(AintersectB); disp('AnotB'); disp(AnotB); disp('BnotA'); disp(BnotA); alpha = simInputs(1); beta = simInputs(2); gamma = simInputs(3); [simDsf(i)] = simCounting(AintersectB, AnotB, BnotA, alpha, beta, gamma); disp('sim'); disp(simDsf(i)); end if(numFeaturePairs >=2) for i=1:numFeaturePairs-1 [AintersectB AnotB BnotA] = featurescomp(features1(i,:), features1(i+1,:)); alpha = simInputs(1); beta = simInputs(2); gamma = simInputs(3); [simSsf(i)] = simCounting(AintersectB, AnotB, BnotA, alpha, beta, gamma); end else simSsf = -1; end case 're' probMatrix = calcReProbs(features1, features2); for i=1:numFeatures [AintersectB AnotB BnotA] = featurescomp(features1(i,:), features2(i,:)); [sim(i)] = simRe(probMatrix, AintersectB, AnotB, BnotA) end otherwise disp('Invalid similarity metric'); end