首先,使用for循环可以轻松解决此问题。但是,我试图强迫/教我自己思考矢量,以利用Matlab最擅长的。
简体中,这是问题解释:
在代码中,这是我最后想要的一个例子:
A = 1:10000;
startIndicies = [5 100 1000];
stopIndicies = [10 200 5000];
...
calculatedResults = [func(A(5:10)) func(A(100:200)) func(A(1000:5000))]
A的长度和开始/停止索引数组的长度是可变的。
就像我说的,我可以通过for循环轻松解决这个问题。但是,由于可以与大型数据集一起使用,我想知道没有for循环是否有一个好的解决方案。
答案 0 :(得分:0)
这是一个可能的解决方案,但我不会将其称为完全向量化的解决方案,而不是一个一个
。 out = cellfun(@(i,j) fun(A(i:j)), num2cell(startIndicies), num2cell(stopIndicies) );
或者,如果您打算提供同质输出,
out = arrayfun(@(i,j) fun(A(i:j)), startIndicies, stopIndicies);