Need to fill out skipped rows in a matrix

1 次查看(过去 30 天)
I have a data analysis code which spits out values by experimental trials 1-10. The problem is that some trials (by design) do not produce a value, meaning some of the data is "complete" and some is "partial". I need help filling out the partial data with the missing trials so that all data matrices are 10x2 and it is straightforward to perform operations on them.
I think this example illustrates my point best. How do I approach this? Even just links to relevant documentation would help a ton, I am still fairly new to the MATLAB universe

采纳的回答

Davide Masiello
Davide Masiello 2022-10-7
编辑:Davide Masiello 2022-10-7
Take this example
complete = [(1:10)',rand(10,1)]
complete = 10×2
1.0000 0.2436 2.0000 0.5726 3.0000 0.6157 4.0000 0.2325 5.0000 0.1763 6.0000 0.8804 7.0000 0.3370 8.0000 0.7356 9.0000 0.7864 10.0000 0.1872
partial = [sort(randperm(10,6))',rand(6,1)]
partial = 6×2
1.0000 0.5511 2.0000 0.4288 4.0000 0.1780 7.0000 0.1619 8.0000 0.5053 10.0000 0.8134
You can apply the following to you dataset.
missing_n = ~any(partial(:,1) == 1:10,1)
missing_n = 1×10 logical array
0 0 1 0 1 1 0 0 1 0
newpartial = zeros(size(complete));
newpartial(missing_n,:) = [find(missing_n)',nan(nnz(missing_n),1)];
newpartial(~missing_n,:) = partial;
partial = newpartial
partial = 10×2
1.0000 0.5511 2.0000 0.4288 3.0000 NaN 4.0000 0.1780 5.0000 NaN 6.0000 NaN 7.0000 0.1619 8.0000 0.5053 9.0000 NaN 10.0000 0.8134

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by