R语音实战笔记

1.R的使用

1.3.基础命令

函数 说明
example(‘foo’) 查看函数示例
data() 查看已加载可用的数据集
vignette(‘foo’) 查看主题为foo可用的vignette文档
getwd() 显示当前工作目录
setwd() 修改工作目录
ls() 显示工作空间的对象
rm(list=ls()) 删除全部的对象
options() 显示或设置当前选项
history(n) 显示最近的n个命令
save.image(‘myfile’) 保存工作空间到myfile中,默认是.RData
load(‘myfile’) 读取一个工作空间到当前会话
source(‘file_name’) 在当前会话中执行一个脚本
sink(‘file_name’) 重定向输出到文件,append是否追加,split=T则同时输出到屏幕和文件中
object.size(x)/1000000 查看变量占用的内存空间,M
srirage.mode(x) 改变变量的存储类型
storage.mode(x) <- “integer” 改为整数型,可以看到该对象的大小会变为原来的一半
memory.size() 查看现在的work space的内存使用
memory.limit() 查看系统规定的内存使用上限,注意,在32位的R中,封顶上限为4G,无法在一个程序上使用超过4G (数位上限)。这种时候,可以考虑使用64位的版本
rm(object) 删除变量
gc() 做Garbage collection,否则内存是不会自动释放的,相当于你没做rm.
rm(list=ls()) 删除全部变量

图像输出

pdf(‘filename.pdf’) #重定向到图像输出
png(‘filename.png’)
jpeg(‘filename.jpeg’)
dev.off() #将输出返回到终端

2.数据结构

2.2.2.矩阵

matrix(vector, nrow=n, ncol=m, byrow=TRUE, dianames=list(rname, cname))

2.2.4.数据框

数据框绑定
attach()
detach()
with()

attach(mtcars)
plot(mpg, wt)
mpg
detach(mtcars)

with(mtcars, {
    summary(mpg, disp, wt)
    plot(mpg, disp)
    plot(mpg, wt)
})

2.2.6.列表的引用

list[[n]]

4.数据管理

1.data.frame(col1,col2…,stringAsFactors=FALSE)
创建数据框的时候,不要将字符串转成因子

2.创建新变量

mydata = transform(mydata,
                    sumx = x1+x2,
                    meanx = (x1+x2)/2)

library(dplyr)
mutate(mydata, sumx = x1+x2, meanx = (x1+x2)/2)

4.3.变量重编码

!x:非x
x|y:或
x&y:与,和
isTRUE(x):测试x是否为true

mydata$age[mydata$age == 99] <-NA

mydata$agecat[mydata$age >=55 & mydata$age <=75] <- 'middle aged'

mydata = with(mydata, {
            agecat <- NA
            agecat[age>75] <-'elder'
            agecat[age>=55 & age <=75] <- 'middle aged'
            agecat[age<55] <- 'young' })

#epicalc包的recode函数
#看看有哪些因子水平,或者说不重复的取值
list = unique(data3$arpu)

#构建 old 列表
old <- c("(50,80)","(10,20]","0","(20,50]","(0,5]","(100,150]","(150,200]","(200,300]","(5,10]","[80,100]","300以上" )

#构建 new 列表
new <- c("低值","低值","低值","低值","低值","高值","高值","高值","低值","高值","高值")

library(epicalc)
recode(vars = "arpu",old,new,dataframe)

#recode 函数其实是用new替换原来的old,所以建议先复制一列,然后在复制的列上进行 recode 操作

#R的cut函数
aaa <- c(1,2,3,4,5,2,3,4,5,6,7)
cut(aaa, 3, dig.lab = 4, ordered = TRUE)

4.4.变量重命名

#1
fit(mydata)  #交互式修改`

#2
library(reshape)
mydata = rename(mydata,
                c(old_name1 = 'new_name1', old_name2 = 'new_name2',...))

#3
names(mydata)[2]='new_name'

4.5.缺失值

删除含有缺失值的行
na.omit(mydata)

4.6.日期

符号 含义 示例
%d 01-31天
%a 缩写的星期 Mon
%A 非缩写的星期 Monday
%m 月份 00-12
%b 缩写的月份 Jan
%B 非缩写的月份 January
%y 两位数的年份 07
%Y 4位数的年份 2007
as.Data(c('2007-06-22','2004-02-13'))

#系统日期
Sys.Date()
date()
format(Sys.Date(), format='%Y%m%d')

#日期加减
end_date - start_date

diff(today, that_day, units='weeks')

#lubridate包

4.8.排序

mydata = mydata[order[mydata$age),]

attach(mydata)
newdata = mydata[order(gender, -age),]
detach(mydata)

4.9.合并数据集

# merge,一种内连接,innder join
total = merge(data1, data2, by=c('id','country'))

rbind()
cbind()

4.10.子集

mydata[, c(6:10)]

mydata[, c(var1,var2,...)]

#丢弃变量
vars = names(mydata) %in% c('q3','q4')
mydata[!vars]

mydata[c(-8,-9)]

#删除变量
mydata$q4 <- NULL

4.10.进入观测

mydata = mydata[,1:3]
mydata[ which(mydata$gender == 'M' & mydata$age>30),]

attach(mydata)
mydata[which(gender == 'M' & age>30),]
detach(mydata)
subset(mydata,age>=35 | age<24, select=c(q1,q2,q3,q4))

subset(mydata, gender =='M' & age >25, select =gender:q4)

4.11.随机抽样

# 无放回随机抽样,抽10个样本
mydata[sample(1:nrow(mydata),10, replace=FALSE), ]

4.12.sql语句

library(sqldf)
newdata = sqldf('select * from mydata where carb=1 order by mpg', row.names=TRUE)

new_data = sqldf('select avg(mpg), avg(disp) as avg_disp, gear from mtcars where cyl in (4,6) group by gear')

5.高级数据管理

5.2.数值与字符处理函数

5.2.1.数学函数

函数 描述
abs(x) 绝对值
sqrt(x) 平方根
x^2 平方
ceiling(x) 向上取整
floor(x) 向下取整
trunc(x) 向零取整
round(x, digits=n) 直接截断保留n位小数
signif(x) 四舍五入保留n位小数
cos(x),sin(x),tan(x) 余弦,正弦,正切
acos(x),asin(x),atan(x) 反余弦,反正弦,反正切
cosh(x),sinh(x),tanh(x) 双曲余弦,双曲正弦,双曲正切
acosh(x),asinh(x),atanh(x) 反双曲余弦,反双曲正弦,反双曲正切
log(x,base=n) n为底的对数,log(x)为自然对数,log10(x)为10常用对数
exp(x) 指数

5.2.2.统计函数

函数 描述
mean(x) 平均数
median(x) 中位数
sd(x) 标准差
var(x) 方差
mad(x) 绝对中位差
quantile(x,probs=c(0.3,0.84)) 分位数
range(x) 范围
sum(x) 求和
diff(x,lag=n) 滞后差分
min(x),max(x) 最小最大值
scale(x,center=T, scale=T) 中心化(center=T)或标准化(center=T, scale=T)

其他均值和方差的标准化
scale(mydata)*sd+mean

5.2.3.概率函数

d=密度函数
p=分布函数
q=分位数函数
r=生产随机数(随机偏差)

分布名称 缩写 分布名称 缩写
正态分布 norm 非中心卡方分布 chisq
Beta分布 beta logistic分布 logis
二项分布 binom 多项分布 multinom
柯西分布 cauchy 负二项分布 nbinom
指数分布 exp 泊松分布 pois
F分布 f Wilcoxon符号秩分布 signrank
Gamma分布 gamma t分布 t
几何分布 geom 均匀分布 unif
超几何分布 hyper Weibull分布 weibull
对数正态分布 lnorm Wilcoxon秩和分布 wilcox

设定随机数种子
set.seed(1234)

5.2.4.字符串处理函

函数 描述
nchar(x) x的字符数量,注意和length(x)的区别
substr(x,start,stop) 提取或替换子字符串,substr(‘abcde’,2,4)<-‘22222’
grep(pattern,x,ignore.case=F,fixed=F) 正则表达式搜索,返回值为匹配的下标
sub(pattern,replacement,x,ignore.case=F,fixed=F) 搜索并替换,如果fixed=T,则pattern是一个文本字符串
strsplit(x,split,fixed=F) 在split处分割字符串,返回一个列表,用unlist()变成向量
paste(x,sep=”) 连接字符串,指定分隔符
toupper(x) 转大写
tolower(x) 转小写

5.2.5.其他实用函数

函数 说明
length(x) 长度
seq(from,to,by) 生产序列
rep(x,n,each=n) 将x重复n次,指定each将会排序
cut(x,n) 分割成n水平的因子

pretty(x,n)创建美观的分割点,在绘图中常用
cat(…,file=’myfile’,append=T)|连接…中的对象,并将其输出到屏幕或者文件中

5.3.apply-by系列

5.3.1.apply

# 1=对每行操作,2=对每列操作
apply(mydata, margin=1, fun=myfunc)

5.3.2.by,分组汇总操作

# 针对1:4列,根据species因子分组,求均值
by(iris[,1:4],Species,mean)

5.3.3.lapply

l=list(a=1:10,b=11:20)
lapply(l,mean)

5.3.4.sapply

lapply返回的是一个含有两个元素 a b的list,而sapply返回的是一个含有元素[[“a”]]和[[“b”]]的vector,或者列名为a和b的矩阵。

l=list(a=1:10,b=11:20)
l.mean=sapply(l,mean)
class(l.mean)
#提取元素a的均值
l.mean[['a']]

5.3.5.tapply

attach(iris)
#根据sprcies进行分类,计算petal的均值
tapply(iris$Petal.Length,Species,mean)
detach(iris)

7基本统计分析

7.1.1描述性统计分析

# 1.查看一般的统计量
vars = c('mpg','hp','wt')
summary(mtcars[vars])

# 2.对一列或多列应用多个函数
myfunc <- function(x, na.omit=Flase){
    if(na.omit)
        x = x[!is.na(x)]
    m=mean(x)
    n=length(x)
    s=sd(x)
    skew=sum((x-m)^3/s^3)/n
    return(c(n=n,mean=m,stdev=s,skew=skew))

sapply(mtcars[vars],myfunc)

# 3.其他包里面的描述性统计量
library(Hmisc)
describe(mtcars[vars])

library(psych)
describe(mtcars[vars])

7.1.2分组汇总

vars = c('mpg','hp','wt')

# 1.简单的 aggregate
aggregate(mtcars[vars], by=(am=mtcars$am,vs=mtcats$vs),mean)

# 2.一般化的 by
myfunc = function(x)(c(mean=mean(x),sd=sd(x)))

by(mtcars[vars], mtcars$am, myfunc)

7.2.1列连表分析

library(vcd)
mydata = Arthritis

# 1.一维列联表
# 1.1 生成频数统计表
mytable = with(mydata, table(Improved))

# 1.2 将频数统计转成百分比
prop.table(mytable)

# 2.二维列联表
# 2.1 table的用法
mytable = table(A,B)

# 2.2 xtable的用法
mytable = xtabs(~ A+B, data=dataframe)
mytable = xtabs(~Treatment+Imporved, data=mydata)

# 2.3 添加边际和
addmargins(mytable)

# 2.4 转成百分比
prop.table(mytable)

# 3.三维列联表
mytable = xtabs(~Treatment+Imporved+Sex, data=mydata)

7.2.2 检验类别型(分类型变量)独立性的方法。

  1. 卡方独立性检验
  2. Fisher精确检验
  3. Cochran-Mantel-Heanszel卡方检验
  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在计算机视觉领域中,极线校正是一种用于处理图像畸变的常用技术。在极线校正之后,可以得到一种称为基础矩阵的数学模型。 基础矩阵是描述两幅图像之间的基本几何关系的矩阵。它包含了两幅图像之间的相对位置和旋转关系。利用基础矩阵,我们可以推导出两幅图像中对应点之间的极线方程。 在matlab中,我们可以使用一些函数来计算和处理基础矩阵。例如,可以使用视觉几何工具箱中的函数来估计基础矩阵。利用这些函数,我们可以输入两幅图像中的对应点,然后通过最小化预测极线与实际极线之间的差异来计算基础矩阵。 一旦我们得到了基础矩阵,我们可以进一步利用它来完成其他计算机视觉任务,比如立体匹配和三维重构。在立体匹配中,基础矩阵可以用于约束匹配点的搜索范围,提高匹配的准确性。在三维重构中,基础矩阵可以用于将对应点从图像坐标系转换到世界坐标系。 总之,matlab提供了一些方便的工具和函数来计算和处理基础矩阵,极线校正是一个常用的技术,可以通过基础矩阵描述两幅图像之间的几何关系。 ### 回答2: 在计算机视觉中,基础矩阵是用于解决立体视觉中的匹配问题的重要概念之一。在使用极线校正对图像进行处理后,我们可以通过MATLAB得到基础矩阵。 首先,极线校正是通过将两幅图像的视线调整至平行于图像平面的校正方法,从而简化图像匹配的过程。它的基本思想是通过找到图像中的对应点来计算基础矩阵。 使用MATLAB进行极线校正后,我们可以通过以下步骤获得基础矩阵: 1. 读取图像:使用MATLAB的图像处理工具箱,我们可以加载并读取需要进行校正的图像。 2. 特征点提取:使用MATLAB中的特征点提取算法,如SURF或SIFT,来检测图像中的特征点。这些特征点可以作为后续计算基础矩阵的输入。 3. 特征点匹配:使用MATLAB中的特征点匹配算法,如RANSAC或光流法,来对两个图像中的特征点进行匹配,以获取匹配点对。这些匹配点对将用于计算基础矩阵。 4. 计算基础矩阵:使用MATLAB中的函数,如estimateFundamentalMatrix,输入匹配点对,计算在极线校正后得到的基础矩阵。 5. 基础矩阵的应用:通过基础矩阵,我们可以进行立体视觉中的很多计算,如三角化、深度估计等。 总结来说,MATLAB提供了一系列用于图像处理和计算的函数和工具箱,可以方便地进行极线校正和基础矩阵的计算。这使得我们可以轻松地进行立体视觉的研究和应用。 ### 回答3: MATLAB是一种广泛应用于科学和工程领域的高级编程语言和环境。在计算机视觉领域,极线校正是一种常见的图像处理方法,用于校正由于相机运动引起的图像畸变。 在极线校正过程中,通过寻找图像中的对极几何关系,可以计算出图像间的基础矩阵。基础矩阵是一种表示两个相机之间的几何关系的矩阵。它描述了三维空间中的点在两个图像中的投影位置之间的关系。 基础矩阵具有以下特性: 1. 基础矩阵是一个3x3的矩阵。 2. 基础矩阵的秩为2。 3. 对于两个图像中的对应点,基础矩阵满足对极约束,即任意一对点在两个图像中的投影点满足极线方程。 在MATLAB中,可以使用计算机视觉工具箱中的函数进行极线校正和基础矩阵的计算。首先,需要使用双目相机进行拍摄,获取一对校准图像。然后,可以使用`stereoParameters`函数计算出立体视觉参数,包括相机内外参和基础矩阵。 经过极线校正后,基础矩阵可以用于计算图像对应点之间的对应关系。根据基础矩阵,可以通过对应点的极线来确定另一幅图像中的对应点。这在三维重建和目标跟踪等领域中非常有用。 总之,MATLAB中的极线校正可以通过计算基础矩阵来校正图像中的畸变。基础矩阵是描述两个图像间几何关系的矩阵,它可以用于计算图像对应点之间的关系,为后续的图像处理和分析提供了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值