make column in a matrix: 1,1,1,2,2,2,3,3,3 etc

7 views (last 30 days)
Hi,
I'm trying to create a matrix A(21,4). In the second column I want to insert the numbers 1,1,1,2,2,2,3,3,3 etc until the end of the column. Tried this:
A = zeros(21, 4);
A(:,2) = rem((0:size(imageInformation,1)-1)',7)+1;
Which creates the column 1,2,3,4,6,7,1,2,3 etc. How can I modify this/is there any way to write code which would input the previously mentioned numbers into the matrix?

Accepted Answer

Jos (10584)
Jos (10584) on 20 Nov 2012
A(:,2) = ceil((1:size(A,1))/3)

More Answers (5)

Matt Fig
Matt Fig on 20 Nov 2012
Edited: Matt Fig on 20 Nov 2012
A(:,2) = reshape(cumsum(ones(3,7),2),21,1);
or
A(:,2) = floor(linspace(1,7.7,21));

Image Analyst
Image Analyst on 20 Nov 2012
Edited: Image Analyst on 20 Nov 2012
Try this:
A(:, 2) = [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7]';
If you need it more general, then say so.
If you have the Image Processing Toolbox, you can do it more generally this way:
A = zeros(21,4);
[rows columns] = size(A);
secondColumn = imresize((1:rows/3)', [rows, 1], 'nearest')
A(:, 2) = secondColumn

Wayne King
Wayne King on 20 Nov 2012
One of many ways (requires Signal Processing Toolbox for upsample.m)
x = (1:7)';
x = repmat(x,1,4);
A = upsample(x,3);
A = filter(ones(3,1),1,A);

Jan
Jan on 20 Nov 2012
A(:, 2) = reshape(repmat(1:7, 3, 1), [], 1);

Andrea
Andrea on 20 Nov 2012
Thank you everyone! Lots of great solutions. I ended up using the one Jos suggested, but I'm very grateful to you all! :)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!