フィルターのクリア

Finding integers between two vectors

4 ビュー (過去 30 日間)
david
david 2013 年 9 月 1 日
hi
im new in the matlab world
i have 2 vectors A and B size (1xM)
i need to find all the integers betwwen corresponding Columns and store the integers in cell arry
for example:
A= 4.54 5.11 9.58 15.04
B= 1.01 3.2 5.5 16.98
i need to create cell arry X that each column contains all the integers between the numbers in A and B columns (1.01-4.54 the integers 2,3,4 3.2-5.11 the integers 4,5... )
X=
2 4 6 16
3 5 7
4 8
9
how can i do it?
thanks

採用された回答

John Doe
John Doe 2013 年 9 月 1 日
A= [4.54 5.11 9.58 15.04];
B= [1.01 3.2 5.5 16.98];
C = sort([A; B]);
C(1,:) = ceil(C(1,:));
C(2,:) = floor(C(2,:));
temp = diff(C) + 1;
D = zeros(max(temp),size(C,2));
for ii = 1:size(C,2)
D(1:temp(ii),ii) = C(1,ii):C(2,ii);
end
  3 件のコメント
the cyclist
the cyclist 2013 年 9 月 2 日
編集済み: the cyclist 2013 年 9 月 2 日
@david, I expect you realize this, since you accepted the answer, but this solution has two features that are different from what you specified in your question:
  • It is a numeric array, not a cell array.
  • It includes extra zeros.
Maybe that doesn't matter to you, but just in case another person tries to use this solution, it is good to realize.
the cyclist
the cyclist 2013 年 9 月 2 日
@david, I suggest you ask your second question as a brand-new one, rather than as a comment here. You will get more "traffic" seeing it.

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

その他の回答 (1 件)

the cyclist
the cyclist 2013 年 9 月 1 日
編集済み: the cyclist 2013 年 9 月 1 日
Here is a slick one-liner:
arrayfun(@(x,y) (ceil(min([x y])):floor(max([x,y])))',A,B,'UniformOutput',false)
Here is a straightforward way with a loop:
A = [4.54 5.11 9.58 15.04];
B = [1.01 3.2 5.5 16.98];
N = length(A);
X = cell(1,length(A));
for i = 1:N
hi = floor(max([A(i) B(i)]));
lo = ceil(min([A(i) B(i)]));
X{i} = (lo:hi)';
end

カテゴリ

Help Center および File ExchangeText Data Preparation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by