Aligning columns in a matrix by padding with zeros

2 visualizaciones (últimos 30 días)
AbioEngineer
AbioEngineer el 19 de Ag. de 2020
Respondida: Stephan el 21 de Ag. de 2020
I have a matrix A below. The values in each column are all roughly 100 apart, but some of them are missing some values. They represent loci of peaks in a graph. I want to make a matrix B that puts the zeros where they need to be: where a value in a column is "skipped"
1698 1696 1699
1826 1819 1816
1928 1921 1921
2063 2065 2059
2184 2186 2181
2399 2278 2270
2544 2373 2373
2655 2449 2555
2792 2552 2652
0 2657 2796
0 2794 0
e.g. column 1 should be
1698
1826
1928
2063
2184
0
2399
0
2544
2655
2792
  2 comentarios
KSSV
KSSV el 20 de Ag. de 2020
How you will determine that a column is skipped?
AbioEngineer
AbioEngineer el 20 de Ag. de 2020
Hi KSSV, I'm new to machine learning and am not sure how to determine if a value in a column is skipped. I guess maybe I can find the column with the most values, and and compare each row value of a column with the distributed values of each row?

Iniciar sesión para comentar.

Respuesta aceptada

Stephan
Stephan el 21 de Ag. de 2020
Under the assumption that you have at least one not corrupted column (here column 2), this might work:
A = [1698 1696 1699
1826 1819 1816
1928 1921 1921
2063 2065 2059
2184 2186 2181
2399 2278 2270
2544 2373 2373
2655 2449 2555
2792 2552 2652
0 2657 2796
0 2794 0]
non_corrupt_col = 2;
b = fix(A/100) - fix(A(:,non_corrupt_col)/100);
while sum(b==1,'all') ~=0
b = fix(A/100) - fix(A(:,non_corrupt_col)/100);
[r,c] = find(b==1,1);
A(r+1:size(A,1),c) = A(r:size(A,1)-1,c);
A(r,c) = 0;
end
disp('result:')
A
Results in:
result:
A =
1698 1696 1699
1826 1819 1816
1928 1921 1921
2063 2065 2059
2184 2186 2181
0 2278 2270
2399 2373 2373
0 2449 0
2544 2552 2555
2655 2657 2652
2792 2794 2796

Más respuestas (0)

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by