segs.slow _ emu.query("schnell", "*", "[Target=T ^Word=S]") segs.fast _ emu.query("schnell", "*", "[Target=T ^Word=F]") phon.slow _ emu.requery(segs.slow, "Target", "Phonetic") phon.fast _ emu.requery(segs.fast, "Target", "Phonetic") lab.slow _ label(phon.slow) lab.fast _ label(phon.fast) aform.slow _ dsmooth(emu.track(phon.slow, "fm")[1:nrow(phon.slow),1:2]) aform.fast _ dsmooth(emu.track(phon.fast, "fm")[1:nrow(phon.fast),1:2]) form.slow _ dcut(aform.slow, mustart(segs.slow)) form.fast _ dcut(aform.fast, mustart(segs.fast)) onform.slow _ dcut(aform.slow, 0, prop=T) onform.fast _ dcut(aform.fast, 0, prop=T) ofform.slow _ dcut(aform.slow, 1, prop=T) ofform.fast _ dcut(aform.fast, 1, prop=T) eucfun <- function(tdat) { omat _ NULL for(j in 1:nrow(tdat$index)){ n _ nrow(tdat[j]$data) dat _ tdat[j]$data x _ c(dat[1,1], dat[n,1]) y _ c(dat[1,2], dat[n,2]) edir _ sqrt((x[1]-x[2])^2 + (y[1]-y[2])^2) mat _ NULL for(k in 1:(n-1)){ valsx _ c(dat[k,1], dat[(k+1),1]) valsy _ c(dat[k,2], dat[(k+1),2]) edist _ sqrt((valsx[1]-valsx[2])^2 + (valsy[1]-valsy[2])^2) mat _ c(mat, edist) } omat$curved _ c(omat$curved, sum(mat)) omat$direct _ c(omat$direct, edir) } omat$curved/omat$direct } # take first take last, sequence of numbers calculate the difference distfun <- function(fm=2) { distfun.sub <- function(tdat, fm=2) { mat _ NULL for(j in 1:nrow(tdat$index)){ dat _ tdat[j,fm]$data n _ length(dat) vals _ seq(dat[1], dat[n], length=n) d _ sum(abs(dat-vals)) mat _ c(mat, d) } mat } slowvals _ distfun.sub(aform.slow, fm=fm) fastvals _ distfun.sub(aform.fast, fm=fm) dat _ c(slowvals, fastvals) RATE _ c(rep("slow", length(slowvals)), rep("fast", length(fastvals))) VOWEL _ c(lab.slow, lab.fast) dmat _ NULL for(j in c("A", "O", "I")){ which _ lab.slow==j mvec _ mean(slowvals[which]) dmat$slow _ c(dmat$slow, mvec) which _ lab.fast==j mvec2 _ mean(fastvals[which]) dmat$fast _ c(dmat$fast, mvec2) } p _ round(cbind(dmat$slow, dmat$fast)) dimnames(p) _ list(c("A", "O", "I"), c("slow", "fast")) barplot(t(p), beside=T, legend.text=c("langsam", "schnell")) dat.f _ data.frame(RATE, VOWEL, dat) summary(aov(dat ~ RATE * VOWEL, dat.f)) } durfun <- function(labx="A", fm=2, onset=T, rate=F) { if(rate) ylab _ paste(paste("F", fm, sep=""), "Hz/ms") else ylab _ paste(paste("F", fm, sep=""), "Hz") if(onset) { data.slow _ onform.slow data.fast _ onform.fast dur.slow _ mustart(segs.slow) - mustart(phon.slow) dur.fast _ mustart(segs.fast) - mustart(phon.fast) } else { data.slow _ ofform.slow data.fast _ ofform.fast dur.slow _ muend(phon.slow) - mustart(segs.slow) dur.fast _ muend(phon.fast) - mustart(segs.fast) } whichs _ lab.slow==labx fdats _ abs(form.slow[whichs,fm] - data.slow[whichs,fm]) durs _ dur.slow[whichs] if(rate) fdats _ fdats/durs whichf _ lab.fast==labx fdatf _ abs(form.fast[whichf,fm] - data.fast[whichf,fm]) durf _ dur.fast[whichf] if(rate) fdatf _ fdatf/durf slope _ c(durs, durf) vals _ c(fdats, fdatf) col _ c(rep(1, length(fdats)), rep(2, length(fdatf))) plot(slope, vals, col=col, ylab=ylab, xlab="duration (ms)") z _ lm(vals ~ slope) abline(z$coef, col=2) summary(z) } "gmean"<- function(x, lab, fun = mean) { flag <- T mat <- NULL for(j in unique(lab)) { which <- lab == j if(is.matrix(x)) { if(sum(which) == 1) vec <- x[which, ] else vec <- apply(x[which, ], 2, fun) } else { flag <- F if(sum(which) == 1) vec <- x[which] else vec <- mean(x[which]) } mat$data <- rbind(mat$data, vec) mat$lab <- c(mat$lab, j) } if(!flag) mat$data <- c(mat$data) mat } efun <- function() { data _ rbind(form.slow, form.fast) data _ -cbind(data[,2], data[,1]) xlim _ range(data[,1]) ylim _ range(data[,2]) par(mfrow=c(1,2)) eplot(form.slow, lab.slow, doellipse=F, centroid=T, dopoints=T, formant=T, xlim=xlim, ylim=ylim, main="slow", xlab="F2 (Hz)", ylab="F1 (Hz)") eplot(form.fast, lab.fast, doellipse=F, centroid=T, dopoints=T, formant=T, xlim=xlim, ylim=ylim, main="fast", xlab="F2 (Hz)", ylab="F1 (Hz)") } cfun <- function() { centroid.slow _ apply(aform.slow$data, 2, mean) centroid.fast _ apply(aform.fast$data, 2, mean) slowc _ sqrt((form.slow[,1]-centroid.slow[1])^2 + (form.slow[,2]-centroid.slow[2])^2) fastc _ sqrt((form.fast[,1]-centroid.fast[1])^2 + (form.fast[,2]-centroid.fast[2])^2) dat _ c(slowc, fastc) RATE _ c(rep("slow", length(slowc)), rep("fast", length(fastc))) VOWEL _ c(lab.slow, lab.fast) slowm _ gmean(slowc, lab.slow) fastm _ gmean(fastc, lab.fast) vec _ match(slowm$lab, fastm$lab) p _ round(cbind(slowm$data, fastm$data[vec])) dimnames(p) _ list(slowm$lab, c("slow", "fast")) barplot(t(p), beside=T, legend.text=c("langsam", "schnell")) dat.f _ data.frame(RATE, VOWEL, dat) summary(aov(dat ~ RATE * VOWEL, dat.f)) } mfun <- function() { labs _ c(lab.slow, lab.fast) flabs _ c(rep("lang", 15), rep("schnell", 15)) labs _ paste(labs, flabs, sep=".") durvals _ c(mudur(phon.slow), mudur(phon.fast)) RATE _ c(rep("slow", nrow(phon.slow)), rep("fast", nrow(phon.fast))) VOWEL _ c(lab.slow, lab.fast) mat _ NULL for(j in unique(labs)){ which _ labs==j mat$mean _ c(mat$mean, mean(durvals[which])) mat$lab _ c(mat$lab, j) } mat$mean _ round(mat$mean) n _ nchar(mat$lab) vowvec _ substring(mat$lab, 1, 1) speed _ substring(mat$lab, 3, n) which _ speed == "lang" mat _ cbind(mat$mean[which], mat$mean[!which]) dimnames(mat) _ list(vowvec[1:3], c("lang", "schnell")) barplot(t(mat), beside=T) dat.f _ data.frame(RATE, VOWEL, durvals) summary(aov(durvals ~ RATE * VOWEL, dat.f)) } sfun <- function() { par(mfrow=c(1,2)) data _ rbind(form.slow[,2], onform.slow[,2], form.fast[,2], onform.fast[,2], ofform.slow[,2], ofform.fast[,2]) xlim _ ylim _ range(data) plot( form.slow[,2], onform.slow[,2], type="n", xlim=xlim, ylim=ylim, xlab="F2 target", ylab="F2 onset") zslow _ lsfit(form.slow[,2], onform.slow[,2]) text(form.slow[,2], onform.slow[,2], lab.slow) abline(zslow$coef) par(new=T) plot( form.fast[,2], onform.fast[,2], type="n", xlim=xlim, ylim=ylim, axes=F, xlab="", ylab="") zfast _ lsfit(form.fast[,2], onform.fast[,2]) text(form.fast[,2], onform.fast[,2], lab.fast, col=2) abline(zfast$coef, col=2) coeffs.on _ c(zslow$coef[2], zfast$coef[2]) plot( form.slow[,2], ofform.slow[,2], type="n", xlim=xlim, ylim=ylim, xlab="F2 target", ylab="F2 offset") zslow _ lsfit(form.slow[,2], ofform.slow[,2]) text(form.slow[,2], ofform.slow[,2], lab.slow) abline(zslow$coef) par(new=T) plot( form.fast[,2], ofform.fast[,2], type="n", xlim=xlim, ylim=ylim, axes=F, xlab="", ylab="") zfast _ lsfit(form.fast[,2], ofform.fast[,2]) text(form.fast[,2], ofform.fast[,2], lab.fast, col=2) abline(zfast$coef, col=2) coeffs.off _ c(zslow$coef[2], zfast$coef[2]) p _ cbind(coeffs.on, coeffs.off) p _ round(p, 2) dimnames(p) _ list(c("slow", "fast"), c("onset/target", "offset/target")) p } rate <- function(init=T) { i.slow _ abs(dcut(aform.slow, mustart(segs.slow)) - dcut(aform.slow, 0, prop=T)) idur.slow _ mustart(segs.slow) - aform.slow$ftime[,1] i.fast _ abs(dcut(aform.fast, mustart(segs.fast)) - dcut(aform.fast, 0, prop=T)) idur.fast _ mustart(segs.fast) - aform.fast$ftime[,1] islow _ i.slow/idur.slow ifast _ i.fast/idur.fast f.slow _ abs(dcut(aform.slow, mustart(segs.slow)) - dcut(aform.slow, 1, prop=T)) fdur.slow _ aform.slow$ftime[,2] - mustart(segs.slow) f.fast _ abs(dcut(aform.fast, mustart(segs.fast)) - dcut(aform.fast, 1, prop=T)) fdur.fast _ aform.fast$ftime[,2] - mustart(segs.fast) fslow _ f.slow/fdur.slow ffast _ f.fast/fdur.fast if(init) { slow _ islow fast _ ifast } else { slow _ fslow fast _ ffast } par(mfrow=c(1,2)) for(k in c(1, 2)){ dmat _ NULL for(j in c("A", "O", "I")){ which _ lab.slow==j mvec _ mean(slow[which,k]) dmat$slow _ c(dmat$slow, mvec) which _ lab.fast==j mvec2 _ mean(fast[which,k]) dmat$fast _ c(dmat$fast, mvec2) } p _ cbind(dmat$slow, dmat$fast) dimnames(p) _ list(c("A", "O", "I"), c("slow", "fast")) barplot(t(p), beside=T, legend.text=c("langsam", "schnell"), ylab="Hz/ms", main=paste("F", k, sep="")) } VOWEL _ c(lab.slow, lab.fast) RATE _ c(rep("S", length(lab.slow)), rep("F", length(lab.fast))) fvals _ rbind(slow, fast) dimnames(fvals) _ list(NULL, c("F1", "F2")) dat.f _ data.frame(RATE, VOWEL, fvals) summary(aov(fvals ~ RATE * VOWEL, dat.f)) }