Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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 预期的标准值和平均值错误_Matlab - Fatal编程技术网

Matlab 预期的标准值和平均值错误

Matlab 预期的标准值和平均值错误,matlab,Matlab,我有一个包含3列的矩阵X。对于问题的答案X=randn(5,3)。 我想规范化XS.T.的列。每列将具有0平均值和1标准值。我使用了以下代码: X=(X-mean(X))./std(X); 我的性病是1。但是,我的平均值非常小,接近0,但不是必需的0。我试着用数字来解释: X=1:15; X=reshape(X,[5 3]); mean(X-mean(X)); 这为每列提供了0值 X=1:15; X=reshape(X,[5 3]); mean((X-mean(X))./std(X));

我有一个包含3列的矩阵
X
。对于问题的答案
X=randn(5,3)
。 我想规范化
X
S.T.的列。每列将具有
0
平均值和
1
标准值。我使用了以下代码:

X=(X-mean(X))./std(X);
我的性病是
1
。但是,我的平均值非常小,接近
0
,但不是必需的
0
。我试着用数字来解释:

X=1:15;
X=reshape(X,[5 3]);
mean(X-mean(X));
这为每列提供了
0

X=1:15;
X=reshape(X,[5 3]);
mean((X-mean(X))./std(X));
但事实并非如此。但是0/任何东西仍然是0。我错过了什么

  • 为什么我得不到
    0
  • 我得到的值是否足够用于预聚类算法规范化

这是一个版本,它实现了我认为您正在尝试的功能。。。您需要复制该矩阵,因为X-mean(X)无效(如果您使用的是标准实现)——您不能从5x3中减去1x3

r = 5; c = 3;
X=randn(r,c);
Xm=repmat(mean(X),r,1);
Xstd = repmat(std(X),r,1);
Xn = (X-Xm)./Xstd;
mean(Xn)
std(Xn)
对我来说这是打印出来的

ans =

  1.0e-16 *

 -0.6661         0    0.4441


ans =

  1.0000    1.0000    1.0000

这似乎正是你想要的。。。注意平均值上的1e-16乘数。。。这本质上是0,有一些浮点错误。

这是一个版本,它实现了我认为您正在尝试的功能。。。您需要复制该矩阵,因为X-mean(X)无效(如果您使用的是标准实现)——您不能从5x3中减去1x3

r = 5; c = 3;
X=randn(r,c);
Xm=repmat(mean(X),r,1);
Xstd = repmat(std(X),r,1);
Xn = (X-Xm)./Xstd;
mean(Xn)
std(Xn)
对我来说这是打印出来的

ans =

  1.0e-16 *

 -0.6661         0    0.4441


ans =

  1.0000    1.0000    1.0000


这似乎正是你想要的。。。注意平均值上的1e-16乘数。。。这本质上是0,有一些浮点错误。

您确定编写的代码正确吗?复制得到的结果会导致矩阵不匹配错误。。。平均值返回每行的平均值,因此
X-Mean(X)
无效…检查是否有本地文件实现
Mean
std
函数。@Philip我对代码有把握。我只是复制和粘贴检查<代码>平均值(X)给出了一行,其中包含每列的平均值
X-平均值(X)
从每列中减去每列的平均值。@Rotem您是指原始值以外的值吗?我肯定没有。代码:
X=1:15;X=重塑(X,[53]);均值(X-均值(X))给出了一个错误。你确定你在使用Matlab吗?使用
清除所有
,然后再次检查。您确定编写的代码正确吗?复制得到的结果会导致矩阵不匹配错误。。。平均值返回每行的平均值,因此
X-Mean(X)
无效…检查是否有本地文件实现
Mean
std
函数。@Philip我对代码有把握。我只是复制和粘贴检查<代码>平均值(X)
给出了一行,其中包含每列的平均值
X-平均值(X)
从每列中减去每列的平均值。@Rotem您是指原始值以外的值吗?我肯定没有。代码:
X=1:15;X=重塑(X,[53]);均值(X-均值(X))给出了一个错误。你确定你在使用Matlab吗?使用
清除所有
,然后再次检查。我可以并且已经从5x3中减去1x3(我已经仔细测试了vry的正确值)。我得到的值与您使用我的代码得到的值相同。也许这是MATLAB版本差异的衍生。无论如何,我的问题是指你的“本质上是0”评论。你能详细解释一下为什么我们没有得到确定的零吗?嗯,你肯定在使用一个非标准的实现,如果它对你有用的话。。。在任何情况下,浮点数都不是无限精确的。检查,并进行详细说明。或者只是谷歌的“浮点算术错误”的差异可能是由于一个“计算机视觉”的期望?我确信我\没有人在这台机器上实现过no
mean()
或减法功能。哦,显然Matlab2016b增加了减法兼容尺寸的功能——我还在2015年!我可以并且已经从5x3中减去1x3(我已经仔细测试了vry的正确值)。我得到的值与您使用我的代码得到的值相同。也许这是MATLAB版本差异的衍生。无论如何,我的问题是指你的“本质上是0”评论。你能详细解释一下为什么我们没有得到确定的零吗?嗯,你肯定在使用一个非标准的实现,如果它对你有用的话。。。在任何情况下,浮点数都不是无限精确的。检查,并进行详细说明。或者只是谷歌的“浮点算术错误”的差异可能是由于一个“计算机视觉”的期望?我确信我\没有人在这台机器上实现过no
mean()
或减法功能。哦,显然Matlab2016b增加了减法兼容尺寸的功能——我还在2015年!