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

14 Ansichten (letzte 30 Tage)
Andrea
Andrea am 20 Nov. 2012
Kommentiert: Gal am 15 Okt. 2015
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?

Akzeptierte Antwort

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

Weitere Antworten (5)

Matt Fig
Matt Fig am 20 Nov. 2012
Bearbeitet: Matt Fig am 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 am 20 Nov. 2012
Bearbeitet: Image Analyst am 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 am 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 am 20 Nov. 2012
A(:, 2) = reshape(repmat(1:7, 3, 1), [], 1);

Andrea
Andrea am 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! :)

Kategorien

Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by