MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何在MATLAB中的循环中创建/处理变量? (https://www.labfans.com/bbs/showthread.php?t=23611)

poster 2019-12-10 20:42

如何在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个变量都可以轻松调用。我知道必须有一种编写此代码的方法,但我不确定该如何完成。



[B]回答:[/B]

您可以选择几种方法:
[LIST][*]您可以先将所有通道数据放入一个大矩阵中,然后使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/mean.html"]MEAN[/URL]函数计算行或列的平均值。例如,如果每个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[*]您可以先将所有通道数据放入一个单元格数组,然后使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]CELLFUN[/URL]函数计算每个单元格的[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]平均值[/URL] :

meanArray = cellfun(@mean,{ch1,ch2,ch3,ch4,ch5}); 即使每个chX数组的长度彼此不同,这也将起作用。
[*]您可以使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/eval.html"]EVAL[/URL]为每个通道均值生成单独的变量:

for iChannel = 1:5 varName = ['ch' int2str(iChannel)]; %# Create the name string eval(['mean_' varName ' = mean(' varName ');']); end[/LIST]
[url=https://stackoverflow.com/questions/3143959]更多&回答...[/url]


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

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