通过列从每个表中减去平均值

21 views (last 30 days)
wbadry
wbadry on 14 Jun 2020
评论: 图像分析师 2020年6月22日
你好,
假设我们有下表
t = array2table([[Rand(10,1),Rand(10,1),Rand(10,1)],'variablenames',,,,{'feat_1',,,,'feat_2',,,,'feat_3'});
t =
10×3桌
feat_1 fart_2 fart_3
________ ________ _________
0.12991 0.60198 0.82582
0.56882 0.26297 0.53834
0.46939 0.65408 0.99613
0.011902 0.68921 0.078176
0。33712 0.74815 0.44268
0.16218 0.45054 0.10665
0.79428 0.083821 0.9619
0.31122 0.22898 0.0046342
0.52853 0.91334 0.77491
0.16565 - 0.152380。8173
我可以使用每个溶栓的平均和标准偏差
平均值=平均值(table2array(t,1));
stdarray = std(table2array(t,1));
平均值=
0。3479 0.4785 0.5547
stdArray =
0。2415 0.2836 0.3793
是否有任何矢量方法可以在没有循环的表中的每个元素上caclulate(元素 - 平均 / std)并保留表?谢谢
我知道 归一化 可以标准化数据,但我需要将其制成代码。

接受的答案

图像分析师
图像分析师 on 14 Jun 2020
Edited:图像分析师 on 14 Jun 2020
试试这个:
t = array2table([[Rand(10,1),Rand(10,1),Rand(10,1)],'variablenames',,,,{'feat_1',,,,'feat_2',,,,'feat_3'})
m = table2array(t);
平均值=平均值(M)
stdArray = std(m)
z =(m- meanarray)./ stdarray%矩阵
zt = array2table(z,'variablenames',,,,{'feat_1',,,,'feat_2',,,,'feat_3'})% 一张桌子

更多答案(1)

wbadry
wbadry 2020年6月22日
你好,
我是通过另一个解决方案来使用的 BSXFUN
Here is a complete example based on my question
% Generate random columns for the example (10 by 3)
t = array2table([[Rand(10,1),Rand(10,1),Rand(10,1)],'variablenames',,,,...
{'feat_1',,,,'feat_2',,,,'feat_3'});
% Subtract from the mean vector (3 by 1)
t1 = bsxfun(@minus,sean(table2array(t)),table2array(t));
百分比用右数组除以标准偏差矢量(3 x 1)
t2 = bsxfun(@rdivide,t1,std(table2array(t)));
%创建标准化表
t = array2table(t2,'variablenames',,,,{'feat_1',,,,'feat_2',,,,'feat_3'});
百分比检查Feat_1的平均值和STD
fart_1_mu =平均值(t.feat_1)
feat_1_sig = std(t.feat_1)
FART_1_MU =
0
FART_1_SIG =
1
1条评论
图像分析师
图像分析师 2020年6月22日
是的,如果需要的话,您可以这样做。我总是发现他们的 *xfun()函数非常隐秘和混乱,而不是常规的数学符号。另外,您始终必须查找或弄清楚操作是什么。我的意思是,谁会知道,他们的头顶,如果您想分开使用@rdivide而不是斜线符号 /或@minus而不是 - 。而且它对其他操作变得更加令人困惑。

登录发表评论。

下载188bet金宝搏


Release

R2020a

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

Start Hunting!