Info
This question is locked. Vuélvala a abrir para editarla o responderla.
how to replace elements in top third, middle third, and bottom third of matix
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marlon Izaguirre
el 1 de Mayo de 2019
Locked: Rik
el 9 de Jul. de 2024
This question is soft-locked: new answers that are equivalent to already posted answers may be deleted without prior notice.
My task is the following:
Write a function called trio that takes two positive integer inputs n and m. The function returns a 3n-by-m matrix called T. The top third of T (an n by m submatrix) is all 1s, the middle third is all 2-s while the bottom third is all 3-s. See example below:
M = trio(2,4)
M =
1 1 1 1
1 1 1 1
2 2 2 2
2 2 2 2
3 3 3 3
3 3 3 3
This is the code that I wrote, but it only works for T = trio (4,3). I want my code to work for any input of n,m.
function T = trio (n, m)
T = randi (10, (3 * n) , m);
T ( 1:n , :) = 1;
T ( (n+1):(end-(n-1)) , :) = 2;
T ( (n+3):end, :) = 3;
end
How is it possible to call out only top third, middle third, and bottom third of any matrix?
Thank you in advance.
6 comentarios
mahmoud khaled
el 11 de Ag. de 2020
function T=trio(n,m)
T=[ones(n,m) ; (2*ones(n,m)) ; (3*ones(n,m))];
end
Rik
el 17 de Ag. de 2020
Editada: Rik
el 18 de Ag. de 2020
I'm going to delete duplicate answers. I will consider the list below as the list of solutions. From the current answer section I will only leave the top one for each of these:
- all answer with general advice about how to solve the question
- answers with more than 1 vote
- allocating the full size array with ones or zeros and indexing into it, writing the correct values
- allocating the full size array with a non-standard function (like randi) and indexing into it, writing the correct values
- 3 and 4, but for the three parts separately, requiring concatenation
- kron (posted in a comment)
- repmat combined with implicit expansion
If new valid solutions are posted I will of course leave those as well, although I think the non-esoteric solutions may be exhausted.
Respuesta aceptada
James Tursa
el 1 de Mayo de 2019
Editada: James Tursa
el 1 de Mayo de 2019
Your row indexing is wrong.
The first n rows are 1:n which you have correct.
The second n rows indexing is n more that the first set, so simply add n: n + (1:n)
The third n rows indexing is n more than the second set, which I will let you figure out (it's pretty simple)
3 comentarios
Ammar
el 27 de Sept. de 2023
function T = trio (n, m)
T =randi (10, (3 * n) , m)
T ( 1:n , :) = 1
T ( (n+1):2*n , :) = 2
T ( (2*n+1):end, :) = 3
end
Más respuestas (6)
AYUSH GURTU
el 28 de Mayo de 2019
function T = trio (n, m)
T = randi (10, (3 * n) , m);
T (1:n,:) = 1;
T ((n+(1:n)),:) = 2;
T (n+(n+(1:n)):end,:) = 3;
end
2 comentarios
sona rai
el 9 de Ag. de 2020
% sir this is right code instead of your code.
function T=trio(n,m)
T=randi(10,(3*n),m);
T(1:n,:)=1;
T((n+(1:n)),:)=2;
T((n+(n+(1:n))),:)=3;
end
t
PRAKASH ANAND
el 8 de Nov. de 2019
% That's my trio code.
%From India.
function T=trio(n,m)
x=ones(n,m);
y=2*x;
z=3*x;
T=[x;y;z];
end
7 comentarios
OUSSAMA El GABBARI
el 19 de En. de 2022
that function you made I see it's very restricted.. I wonder if it'd work for matrices of larger dimensions !
evan muas
el 2 de Dic. de 2019
function T=trio(n,m)
T=[ones(n,m);2*ones(n,m);3*ones(n,m)]
end
3 comentarios
Juvraj Singh Sandhu
el 4 de Oct. de 2020
Editada: Juvraj Singh Sandhu
el 4 de Oct. de 2020
this will work for all inputs
function T= trio(n,m);
T1= ones(n,m);
T2= 2*ones(n,m);
T3= 3*ones(n,m);
T= [T1;T2;T3];
2 comentarios
Stephen23
el 8 de Sept. de 2023
"but i dont think function will return 3n by m matrix."
Please show any positive integer values of m & n for which this function does not return a 3n by m matrix.
mayank ghugretkar
el 5 de Jun. de 2019
function T=trio(n,m)
T(3*n,m)=3; % or you can use random no. generation...but since we are assigning alues anyway , this vl work fine !
T(1:n,:)=1;
T((n+1):2*n,:)=2;
T((2*n+1):3*n,:)=3;
end
hope this'll help, welcome !
1 comentario
SWAMI NAIDU BODDU
el 1 de Jun. de 2020
Perfect code for random inputs also...... Thanks you sirr!!.....
Doga Savas
el 22 de Ag. de 2019
function d = trio(n,m)
a = randi(1,n,m);
b = 2 + rand(n,m)*0;
c = 3 + rand(n,m)*0;
d = [a;b;c];
end
3 comentarios
Rik
el 8 de Sept. de 2023
trio_even_less_baloney = @(n,m) repelem((1:3).',n,m);
n=2;m=4;
trio_even_less_baloney(n,m)
Although your point is absolutely valid.
DGM
el 8 de Sept. de 2023
Yeah, maybe I should've called it trio_reduced_baloney()
I figured repelem() was already officially exhausted. Reshaping/permuting might not be minimal, but it was a reasonable basic option that was still fair game.
This question is locked.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!