MATLAB Answers

0

Hi. I am a complete novice at matlab and have been asked to create a 10x10 matrix in as few steps as possible. The first row has to be from 1:10, the second line from 2:11 and so on. How can I create this using repmat?

Asked by Sam Thorpe on 21 Feb 2019
Latest activity Commented on by Sam Thorpe on 22 Feb 2019
%this is the matrix I want to achieve
A = zeros(10)
A(1,:)=[1:10]
A(2,:)=[2:11]
A(3,:)=[3:12]
A(4,:)=[4:13]
A(5,:)=[5:14]
A(6,:)=[6:15]
A(7,:)=[7:16]
A(8,:)=[8:17]
A(9,:)=[9:18]
A(10,:)=[10:19]
%How can I achieve this using repmat, reshape or meshgrid and the colon
%operator?

  1 Comment

"How can I achieve this using repmat, reshape or meshgrid and the colon operator?"
Are those really the only operators you are allowed to use?

Sign in to comment.

4 Answers

Answer by Fangjun Jiang
on 21 Feb 2019
 Accepted Answer

(1:10)+(0:9)'

  2 Comments

Thanks Fanjung, but is there any way of doing this using the functions which I specified?
It implies
repmat(1:10,10,1)+repmat((0:9)',1,10)

Sign in to comment.


Answer by Stephen Cobeldick on 22 Feb 2019

This uses meshgrid and plus as well (not sure if that is allowed):
>> [X,Y] = meshgrid(0:9,1:10);
>> X+Y
ans =
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 11 12
4 5 6 7 8 9 10 11 12 13
5 6 7 8 9 10 11 12 13 14
6 7 8 9 10 11 12 13 14 15
7 8 9 10 11 12 13 14 15 16
8 9 10 11 12 13 14 15 16 17
9 10 11 12 13 14 15 16 17 18
10 11 12 13 14 15 16 17 18 19

  0 Comments

Sign in to comment.


Answer by madhan ravi
on 22 Feb 2019

Honestly Fangjun Jiang's answer is the way I would do it but according to your question "How can I create this using repmat?" Which I think is a complete waste of time.
repmat(1:10,numel(1:10),1)+repmat((0:9).',1,numel(0:9))

  3 Comments

Nice use of repmat to get it onto one line.
Yes, it is a strange and inefficient task. I am still wondering if plus is allowed or not... I guess we will just have to wait for for feedback from Sam Thorpe: what is allowed?
True we should wait:
Another possibilty:
(0:9).' can be replaced with reshape(0:9,1,[])
Thank you all very much for your help. It is part of a task for a course which is terrible at teaching us the basics of using the software. The use of plus is allowed. It just asks us to use one of the three functions I specified and the colon operator but gave us no method of using them.

Sign in to comment.


Answer by Jos (10584)
on 22 Feb 2019
Edited by Jos (10584)
on 22 Feb 2019

I think this is the only acceptable answer is, given all restraints:
A = reshape([1:10 2:11 3:12 4:13 5:14 6:15 7:16 8:17 9:18 10:19],10,10)
which does not use numel, tranpose (.'), semi-colons, and plus :-D
But wait a minute, ... is concatenation using square brackets acceptable or not ...

  0 Comments

Sign in to comment.