matlab - 如何访问和标准化元胞数组元素(Matlab)
问题描述
我有一个元胞数组数据结构,我想标准化它的元素。如何将zscore
或平均值和标准应用于每个单元格数组?我尝试执行以下操作,但不正确。下面的代码随机生成 50 组不同的数据,每组 1000 个元素。我什至尝试了以下cellfun(@(x)(x-mu)./sg,X,'UniformOutput',false)
方法,但我无法计算单元结构的mu
(平均值)和sg
(标准偏差)。请帮忙。
for n = 1: 50
x=rand(1,1000);
X(n)= {x} ;
end
XV = zscore(X);
解决方案
zscore
是统计工具箱中的一个功能,我没有。文档说您可以使用该选项将其应用于标准化矩阵('all'
注意!这是 MATLAB R2018b 的新功能):
zscore(X,0,'all'); % won't work in versions of MATLAB before R2018b
如果你和我一样没有这个工具箱,它应该相当于:
(X - mean(X(:))) / std(X(:));
所以我们可以这样写一个匿名函数:
standardize = @(X)(X - mean(X(:))) / std(X(:));
或等效地
standardize = @(X)zscore(X,0,'all');
现在,您可以使用以下方法将此函数应用于数组中的所有矩阵cellfun
:
X = cell(5,3);
for ii=1:numel(X)
X{ii} = rand(1,1000);
end
XV = cellfun(standardize,X,'UniformOutput',false);
推荐阅读
- sql-server - 将 IIF() 和 datepart 访问语句转换为 SQL Server
- django - 如何将 css 应用于 Django 模板中的三级递归 mptt 树?
- unicode - html页面中的Unicode字符
- .htaccess - 使用 phpmvc 时,url 将 www 重写为非 www 并删除参数 index.php?url
- excel - 如何解决 vba 中的溢出错误?
- azure-devops - 在新的拉取请求上自动创建工作项
- python - 在 Python 中进行网页抓取时循环网页(如谷歌搜索)
- spring-boot - Spring Boot 2.2 出现错误“带有 ID 'junit-vintage' 的 TestEngine 无法发现测试”
- python - 使用 Python 删除 csv 中的行
- php - 通过 AJAX 访问 php 文件返回 403 Forbidden