How to find maximum square zero matrix through the biggest matrix?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Serafettin Bal
el 17 de Jun. de 2021
Comentada: Atsushi Ueno
el 22 de Jun. de 2021
how to plot a picture in matlab?
Below is the code that generates a random 6*6 diagonal square matrix.
And, the resulting random matrix (Mout) is here.
For example, the largest square zero matrix for this matrix is as follows.
4*4 Square zero matrix for the 6*6 square matrix.
So, how can I find the size of the maximum square zero matrix that can be created from this matrix?
7 comentarios
Rik
el 22 de Jun. de 2021
Editada: Rik
el 22 de Jun. de 2021
I recovered the removed content from the Google cache (something which anyone can do). Editing away your question is very rude. Someone spent time reading your question, understanding your issue, figuring out the solution, and writing an answer. Now you repay that kindness by ensuring that the next person with a similar question can't benefit from this answer.
The image of the code was later replaced by this:
N = randi([6 6],1);
M = randi([0 1], N);
Mu = triu(M);
Ml = Mu';
Mout = Mu + Ml;
Mout = Mout - diag(diag(Mout));
G = graph(Mout,'lower');
plot(G)
Atsushi Ueno
el 22 de Jun. de 2021
@Rik Thank you for your recovering action. I can read back the comment left by the questioner in the history, so I will answer it.
Respuesta aceptada
Atsushi Ueno
el 18 de Jun. de 2021
What I did is:
- Solving Find the biggest empty box - MATLAB Cody - MATLAB Central (mathworks.com)
- Cheating other solution! --> "Finding 2D convolution with ones = 0" is the best idea
- To find the square that can wrap across the edges: repmat(Mout,2) does work for the issue
If there are square zero matrices of the same size, the upper left one will be selected.
Sorry, it is not tested well.
N = randi([6 6],1);
M = randi([0 1], N);
Mu = triu(M);
Ml = Mu';
Mout = Mu + Ml;
Mout = Mout - diag(diag(Mout));
G = graph(Mout,'lower');
plot(G);
Mout4 = repmat(Mout,2);
for k = 1:length(Mout)
[r,c] = find(~conv2(Mout4,ones(k),'valid'),1);
if r
k % k is the size of the square zero matrix
r % r is the row index of the square zero matrix
c % c is the column index of the square zero matrix
end
end
2 comentarios
Atsushi Ueno
el 19 de Jun. de 2021
I'm sorry. I got a lot of questions to answer, but I slept for 12 hours afterwards.
Atsushi Ueno
el 22 de Jun. de 2021
>every runs (because Mout matris created randomly) return the same output. k=1 r=1 c=1 k=2 r=1 c=1
@Serafettin Bal Yes, most of the patters created randomly have small squares. Why don't you create some matrix has bigger chank of zero for testing? The logic I wrote finds the square of zero from smaller one to bigger one. And the last printed out 'k' is the size of the maximum square zero matrix.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!