Fill in sequential numbers between two numbers

9 ビュー (過去 30 日間)
Tyler Smith
Tyler Smith 2016 年 7 月 7 日
コメント済み: the cyclist 2016 年 7 月 7 日
I have two matrices, A = (1,2,3,4,5) and B = (6,8,14,12,11). I need to generate an array in which all the numbers between A(row,1) and B(row,1), A(row,2) and B(row,2), etc. are filled in. It should look like this: outputarray = (1,2,3,4,5,6,2,3,4,5,6,7,8,3,4,5,6,7,8,9,10,11,12,13,14...). So the numbers between 1 and 6 (the first cells of A and B) would get filled in and so on down the line.

採用された回答

the cyclist
the cyclist 2016 年 7 月 7 日
Here's one way:
A = [1,2,3,4,5];
B = [6,8,14,12,11];
N = numel(A);
C = cell(1,N);
for ni = 1:N
C{ni} = A(ni):B(ni);
end
output = [C{:}]
  2 件のコメント
Tyler Smith
Tyler Smith 2016 年 7 月 7 日
Thanks! Works great.
the cyclist
the cyclist 2016 年 7 月 7 日
You could also substitute this line in place of the for loop:
C = cellfun(@(x,y)x:y,num2cell(A),num2cell(B),'UniformOutput',false)

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

その他の回答 (1 件)

James Tursa
James Tursa 2016 年 7 月 7 日
C = cellfun(@colon,mat2cell(A,1,ones(1,numel(A))),mat2cell(B,1,ones(1,numel(B))),'uni',false);
result = [C{:}];
  1 件のコメント
Tyler Smith
Tyler Smith 2016 年 7 月 7 日
Thanks for the help!

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

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by