Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 避免使用for循环_Matlab_Loops_Matrix - Fatal编程技术网

Matlab 避免使用for循环

Matlab 避免使用for循环,matlab,loops,matrix,Matlab,Loops,Matrix,我想得到一些关于如何避免使用for循环的帮助。我看到过几个类似的问题,但无法找到适合我需求的具体问题。目前我使用循环,它非常庞大和混乱。以下是数据结构以及我希望实现的目标: 我必须索引来自1080时间点的数据,这些时间点来自变量mean_data,它是1080x1双精度数据。一些时间点属于我感兴趣的特定任务条件和特定事件。有3个条件(cond1、cond2、cond3)和4个任务事件(event1、event2、event3、event4)。此信息来自变量params。特别是params的第8列

我想得到一些关于如何避免使用for循环的帮助。我看到过几个类似的问题,但无法找到适合我需求的具体问题。目前我使用循环,它非常庞大和混乱。以下是数据结构以及我希望实现的目标:

我必须索引来自1080时间点的数据,这些时间点来自变量
mean_data
,它是1080x1双精度数据。一些时间点属于我感兴趣的特定任务条件和特定事件。有3个条件(cond1、cond2、cond3)和4个任务事件(event1、event2、event3、event4)。此信息来自变量
params
。特别是
params
的第8列有条件信息(分别为1、2、3平均值cond1、cond2、con3)。事件信息可从
params
中的第11列获得。下面是我可以对循环执行的操作:

for c=1:size(params,1)
        if params(c,8)==1
            cond1_event1(end+1,1)=mean([data(params(c,11)+3,1),data(params(c,11)+4,1)]);
            cond1_event2(end+1,1)=mean([data(params(c,11)+6,1),data(params(c,11)+7,1)]);
            cond1_event3(end+1,1)=mean([data(params(c,11)+8,1),data(params(c,11)+9,1)]);
            cond1_event4(end+1,1)=mean([data(params(c,11)+10,1),data(params(c,11)+11,1)]);

        elseif params(c,8)==2
            cond2_event1(end+1,1)=mean([data(params(c,11)+3,1),data(params(c,11)+4+1,1)]);
            etc.

        elseif params(c,8)==3
            cond3_event1(end+1,1)=mean([data(params(c,11)+3,1),data(params(c,11)+4,1)]);
            etc.
        end
    end

这些环很清楚,但是太长了。有没有人对如何让这个更优雅一点有什么建议?输出应产生12个变量(3个条件x 4个事件)。每个变量都是一个
nx1双精度
。谢谢。

您可以简单地使用逻辑索引,然后使用垂直连接

idx = params(c, 8) == 1;
cond1_event1 = [cond1_event1; mean(...)];

然后重复其他条件,或使用循环(1:3)

执行时间是多少?