how to add some value to random matrix with specific condition?
Mostrar comentarios más antiguos
if i have A represent the number of group ones in matrix in the row
A = [ 1 2 0
2 1 1
3 1 1 ]
i want to generate matrix like this depend on A which between the group of ones at least one zero
F = [1 0 1 1 0 0 0
1 1 0 1 0 1 0
1 1 1 0 1 0 1 ]
1 comentario
Stephen23
el 29 de Abr. de 2016
Respuestas (1)
Stephen23
el 29 de Abr. de 2016
A = [ 1 2 0
2 1 1
3 1 1 ]
%
N = max(sum(1+A,2));
C = arrayfun(@(n){[ones(1,n),0]},A);
C = cellfun(@(c){[c{:}]},num2cell(C,2));
C = cellfun(@(v){[v,zeros(1,N-numel(v))]},C);
F = vertcat(C{:});
F(:,end) = []
prints the output in the command window:
F =
1 0 1 1 0 0 0
1 1 0 1 0 1 0
1 1 1 0 1 0 1
4 comentarios
Firas Al-Kharabsheh
el 29 de Abr. de 2016
My answer is not wrong, because you actually changed the requirements afterwards.
Please explain your new requirements clearly:
- exactly how many leading zeros there need to be, or
- where the ones should be.
and then explain how this new requirement matches your original example:
1 0 1 1 0 0 0
1 1 0 1 0 1 0
1 1 1 0 1 0 1
Why are these ones not centered ?
Firas Al-Kharabsheh
el 29 de Abr. de 2016
Guillaume
el 29 de Abr. de 2016
If you start another question, then you still should accept Stephen's answer considering he did answer the current question correctly.
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!