Dear all, I have 3 cell elements and vector with 1*10 ( this is just part of 100 elements of cell). what I want elements in cell 1 equal the value.
s={[1,9,7,4][2,6,4][3,4]};
a=[ 1 0 0.5 2 1 4 5 2 3 4];
re_cell1= 1+3+5+2
re_cell2= 0+4+2
re_cell3= 0.5+2
results=[11 6 2.5];
Thanks a lot. I will appreciate it.

 채택된 답변

the cyclist
the cyclist 2017년 1월 23일

0 개 추천

Here is one way:
s = {[1,9,7,4], [2,6,4], [3,4]};
a = [ 1 0 0.5 2 1 4 5 2 3 4];
results = cell2mat(cellfun(@(x)sum(a(x)),s,'UniformOutput',false));

댓글 수: 4

skysky2000
skysky2000 2017년 1월 23일
You are great man. Thanks the cyclist, I really appreciate it.
results = cellfun(@(x)sum(a(x)),s);
the cyclist
the cyclist 2017년 1월 23일
skysky2000, use Stephen's simpler answer.
Originally I used the "uniform output" false, because I was returning the individual "re_cell1" vectors, which were of different lengths. Then I decided that you probably only wanted the "results" output, but forgot you could then use the simple version!
Thanks, Stephen.
skysky2000
skysky2000 2017년 1월 23일
Thanks a lot, both of them work... that what I want appreciate it Stephen..

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

태그

질문:

2017년 1월 23일

댓글:

2017년 1월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by