Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:41   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中的循环中创建/处理变量?

我需要计算多个变量的平均值,标准偏差和其他值,我想知道如何利用循环来发挥自己的优势。我有5个电极。因此,为了计算每个的平均值,我这样做:

mean_ch1 = mean(ch1); mean_ch2 = mean(ch2); mean_ch3 = mean(ch3); mean_ch4 = mean(ch4); mean_ch5 = mean(ch5); 我想要的是能够将该代码压缩为一行左右。我尝试的代码不起作用:

for i = 1:5 mean_ch(i) = mean(ch(i)); end 我知道这段代码是错误的,但是它传达了我要完成的想法。我想以循环或单元数组命名的5个单独变量结束,其中所有5个变量都可以轻松调用。我知道必须有一种编写此代码的方法,但我不确定该如何完成。



回答:

您可以选择几种方法:
  • 您可以先将所有通道数据放入一个大矩阵中,然后使用MEAN函数计算行或列的平均值。例如,如果每个chX变量都是N-by-1数组,则可以执行以下操作:

    chArray = [ch1 ch2 ch3 ch4 ch5]; %# Make an N-by-5 matrix meanArray = mean(chArray); %# Take the mean of each column
  • 您可以先将所有通道数据放入一个单元格数组,然后使用CELLFUN函数计算每个单元格的平均值

    meanArray = cellfun(@mean,{ch1,ch2,ch3,ch4,ch5}); 即使每个chX数组的长度彼此不同,这也将起作用。
  • 您可以使用EVAL为每个通道均值生成单独的变量:

    for iChannel = 1:5 varName = ['ch' int2str(iChannel)]; %# Create the name string eval(['mean_' varName ' = mean(' varName ');']); end

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:09


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.