How to fill end of rows of a matrix with NaN values?

16 vues (au cours des 30 derniers jours)
Mr M.
Mr M. le 1 Juin 2021
I have a matrix M, and vector of indices K. I would like to make an element M(k,j) = NaN if j >= K(k). It is possible to do this with a vectorized short methode?
  2 commentaires
Bob Thompson
Bob Thompson le 1 Juin 2021
Modifié(e) : Bob Thompson le 1 Juin 2021
Why not just preallocate the matrix with nan values? Do you have any idea of the max size your matrix could be?
M = nan(max(k),max(j));
Mr M.
Mr M. le 2 Juin 2021
I think, you misunderstood my problem. Lets see an example.
let M be: [1,2,3; 1,2,3; 1,2,3; 1,2,3]; An let K be: [2; 3; 1; NaN or 4 or anithing else]. This means I need the following output:
[1;NaN,NaN; 1,2,NaN; NaN,NaN,NaN; 1,2,3]

Connectez-vous pour commenter.

Réponses (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov le 1 Juin 2021
Hi,
here is a simple solution, e.g.:
M = magic(5);
M(:,end)=nan

Walter Roberson
Walter Roberson le 2 Juin 2021
M = [1,2,3; 1,2,3; 1,2,3; 1,2,3]
M = 4×3
1 2 3 1 2 3 1 2 3 1 2 3
K = [2; 3; 1; NaN]
K = 4×1
2 3 1 NaN
M((1:size(M,2)) >= K(:)) = nan
M = 4×3
1 NaN NaN 1 2 NaN NaN NaN NaN 1 2 3

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by