Dear all, I have one vector (b) and one cell (a) as shown below: How I know how many times each number in vector b repeat it in a.
a=[{[1,9,79,3] [2,29,16,7,3] 3 [4,74,3] [5,73,79,3] [6,56,3] [7,3]}]
b=[ 79 3 74 10];
the expect result should be;
result= [ 2 7 1 0];
Thanks alot

 採用された回答

KSSV
KSSV 2016 年 12 月 30 日

1 投票

a=[{[1,9,79,3] [2,29,16,7,3] 3 [4,74,3] [5,73,79,3] [6,56,3] [7,3]}] ;
b=[ 79 3 74 10];
result= [ 2 7 1 0];
a_mat = cell2mat(a) ;
for i = 1:length(b)
result(i) = length(find(a_mat==b(i)))
end

1 件のコメント

skysky2000
skysky2000 2016 年 12 月 30 日
That perfect KSSV, I appreciate it .
Thankssss alot

サインインしてコメントする。

その他の回答 (2 件)

Stephen23
Stephen23 2016 年 12 月 30 日

1 投票

A much simpler solution:
>> a = {[1,9,79,3],[2,29,16,7,3],3,[4,74,3],[5,73,79,3],[6,56,3],[7,3]};
>> b = [79,3,74,10];
>> sum(bsxfun(@eq,[a{:}],b(:)),2)
ans =
2
7
1
0

1 件のコメント

skysky2000
skysky2000 2016 年 12 月 30 日
Thanks Stephen, What about the second question?

サインインしてコメントする。

skysky2000
skysky2000 2016 年 12 月 30 日
編集済み: Stephen23 2016 年 12 月 30 日

0 投票

Dear KSSV, another question. Can I take the cell that number repeat it on it with same loop. like for example:
a=[{[1,9,79,3] [2,29,16,7,3] 3 [4,74,3] [5,73,79,3] [6,56,3] [7,3]}] ;
b=[ 79 3 74 10];
result= [ 2 7 1 0];
cell-part 79= [{[1,9,79,3] [5,73,79,3]}]
cell_part 3 = [{[1,9,79,3] [2,29,16,7,3] 3 [4,74,3] [5,73,79,3] [6,56,3] [7,3]}];
cell_part 74 = {[4,74,3]}
cell_part 10 = {0};
thankss

1 件のコメント

Stephen23
Stephen23 2016 年 12 月 30 日
@skysky2000: that is not a good idea: naming variables dynamically will make your code slow, buggy, and hard to follow. Read this to know why:
A much better solution is to learn to use indexing, which is fast and efficient.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2016 年 12 月 30 日

コメント済み:

2016 年 12 月 31 日

Community Treasure Hunt

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

Start Hunting!

Translated by