Executing same function in different elements of an array

3 次查看(过去 30 天)
Hi,
I have wrote a function for small calculation. And I have an array 'A' which has over 25000 elements. I would like to refer certain ranges like A(2500:2800), A(5000:5300) and so on.., execute above mantioned function on them. Also, getting separate outputs from each range of A that I have selected. I have tried using array fun but I couldn`t make it work.
Please give your recommendations in this case.
Thank you

采纳的回答

Stephen23
Stephen23 2020-5-20
Try something like this:
B = [2500,5000,...]; % begin indices
E = [2800,5300,...]; % end indices
N = numel(B);
C = cell(1,N);
for k = 1:N
V = A(B(k):E(k));
... do whatever with subvector V
C{k} = ... output of your code
end
  2 个评论
Yanjika O
Yanjika O 2020-5-21
Thank you for answering.
Here is what I tried so far. What I want here is
(1) Get the range of A from 10 to 20, 30 to 40, 50 to 60, 70 to 80 and 90 to 100
(2) Run the code below defining V vector starting from idx=V<5... for every range that I have defined on 1st step
(3) And get the summary result of how many of the element was met with my condition above by disp(f)
I still couldn`t fiure it out. There might be some wrong usafe of sth. Please suggest more.
A=(1:1:100);
B=A([10, 30, 50, 70, 90]);
C=A([20, 40, 60, 80, 100]);
N=numel(C);
D=cell(1:N);
for k=1:N
V=A(B(k):C(k));
idx=V<5;
ii1=strfind([0 idx 0],[0 1]);
ii2=strfind([0 idx 0],[1 0])-1;
ii=(ii2-ii1+1)>=5;
out=arrayfun(@(x,y)s(x:y),ii1(ii),ii2(ii),'un',0);
n=cellfun(@numel,cell(out));
for n=n(:,:)'
fd=(n/30);
f=sum(fd);
disp(f)
end
end
Stephen23
Stephen23 2020-5-21
Replace the definitions of B and C with
B = [10,30,50,70,90];
C = [20,40,60,80,100]);
These are supposed to be vectors of indices. You used them to extract elements of A before the loop, and then in the loop you used those extracted elements of A as indices into A... which is unlikely to be very useful.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by