Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
倍频程/Matlab中的scale()R函数等价物_R_Matlab_Octave - Fatal编程技术网

倍频程/Matlab中的scale()R函数等价物

倍频程/Matlab中的scale()R函数等价物,r,matlab,octave,R,Matlab,Octave,为了避免循环,是否有办法将数据矩阵集中在列(或行)的平均值周围,按标准偏差(也可按列或行)缩放每个条目 在R中,这很简单:scale(数据,中心=T,scale=T)) 但是我不知道如何在Ocatave或Matlab中实现相同的基本预处理。没有一个函数可以做到这一点,但是您可以使用dim参数来实现这一点。我们还可以使用bsxfun将其全部打包成一行 A = rand(5, 4); % Column-wise bsxfun(@rdivide, bsxfun(@minus, A, mean(A,

为了避免循环,是否有办法将数据矩阵集中在列(或行)的平均值周围,按标准偏差(也可按列或行)缩放每个条目

在R中,这很简单:
scale(数据,中心=T,scale=T))


但是我不知道如何在Ocatave或Matlab中实现相同的基本预处理。

没有一个函数可以做到这一点,但是您可以使用
dim
参数来实现这一点。我们还可以使用
bsxfun
将其全部打包成一行

A = rand(5, 4);

% Column-wise
bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 1)), std(A, [], 1))

% Row-wise  
bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 2)), std(A, [], 2))
解释

使用
dim
参数
mean
可以计算
A
中每列的平均值

M = mean(A, 1)
然后,我们可以使用
bsxfun
从每列中的每个值中减去平均值(
@减去
)。我们需要使用
bsxfun
,因为
M
1 x ncol
A
nRows x ncol
bsxfun
将自动为我们广播操作

B = bsxfun(@minus, A, M);
然后我们要计算每列的标准偏差,再次使用
dim
参数(第三个输入)

将每一列除以这个标准差

bsxfun(@rdivide, B, S);
所以把这些都放在一起

bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 1)), std(A, [], 1))

要执行行操作,我们只需将
dim
参数从1(列)切换到2(行)。

没有一个函数可以执行此操作,但您可以使用
std
mean
dim
参数来完成此操作。我们还可以使用
bsxfun
将其全部打包成一行

A = rand(5, 4);

% Column-wise
bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 1)), std(A, [], 1))

% Row-wise  
bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 2)), std(A, [], 2))
解释

使用
dim
参数
mean
可以计算
A
中每列的平均值

M = mean(A, 1)
然后,我们可以使用
bsxfun
从每列中的每个值中减去平均值(
@减去
)。我们需要使用
bsxfun
,因为
M
1 x ncol
A
nRows x ncol
bsxfun
将自动为我们广播操作

B = bsxfun(@minus, A, M);
然后我们要计算每列的标准偏差,再次使用
dim
参数(第三个输入)

将每一列除以这个标准差

bsxfun(@rdivide, B, S);
所以把这些都放在一起

bsxfun(@rdivide, bsxfun(@minus, A, mean(A, 1)), std(A, [], 1))

要执行行操作,我们只需将
dim
参数从1(列)切换到2(行)。

在倍频程中,有两个函数用于此center()和zscore()。center只是减去平均值,而zscore也除以sd(一种有时被称为标准化的操作)

中心(x)

通过减去其平均值将数据居中

如果x是一个向量,减去它的平均值。如果x是一个矩阵,则对每个矩阵执行上述操作 专栏。如果给出了可选参数dim,请按此操作 维度

zscore(x,opt,dim)计算x的Z分数

如果x是一个向量,减去它的平均值,除以它的标准偏差。 如果标准偏差为零,则改为除以1

可选参数opt确定在以下情况下使用的规范化: 计算标准偏差,其定义与 std的相应参数

如果x是矩阵,则沿第一个非单体维度计算。 如果给出了第三个可选参数dim,请按此操作 维度


在倍频程中,有两个函数用于此center()和zscore()。center只是减去平均值,而zscore也除以sd(一种有时被称为标准化的操作)

中心(x)

通过减去其平均值将数据居中

如果x是一个向量,减去它的平均值。如果x是一个矩阵,则对每个矩阵执行上述操作 专栏。如果给出了可选参数dim,请按此操作 维度

zscore(x,opt,dim)计算x的Z分数

如果x是一个向量,减去它的平均值,除以它的标准偏差。 如果标准偏差为零,则改为除以1

可选参数opt确定在以下情况下使用的规范化: 计算标准偏差,其定义与 std的相应参数

如果x是矩阵,则沿第一个非单体维度计算。 如果给出了第三个可选参数dim,请按此操作 维度


你看过这个吗?你看过这个吗?全新的Ocatve/Matlab。。。请您告诉我
@
是做什么的好吗?@AntoniParellada正在添加一个描述。@AntoniParellada您希望它除以或乘以标准偏差吗?我现在想问一下。。。如果我们要执行PCA或梯度下降,它应该被划分;那么您是否只需键入
@divide
?还有,
std(A,[],1)
中的
[]
部分的含义或需要是什么?@AntoniParellada我刚刚用除法更新了它。你想用。另外,
[]
输入是因为第二个输入是权重,
[]
确保默认值在Ocatve/Matlab中全新使用。。。请您告诉我
@
是做什么的好吗?@AntoniParellada正在添加一个描述。@AntoniParellada您希望它除以或乘以标准偏差吗?我现在想问一下。。。如果我们要执行PCA或梯度下降,它应该被划分;那么您是否只需键入
@divide
?还有,
std(A,[],1)
中的
[]
部分的含义或需要是什么?@AntoniParellada我刚刚用除法更新了它。你想用。另外,
[]
输入是因为第二个输入是重量,
[]
确保使用默认值