Fill NaN matrix with vector of unequal sizes
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Inti Vanmechelen
le 18 Oct 2019
Modifié(e) : Stephen23
le 27 Oct 2021
Hi all,
I have the following code:
temp = {'AccNorm','GyrNorm'};
NSensors = 5;
for a = 1:length(temp)
for k = 1:NSensors
CMC_RT(k).RF.(temp{a}) = nan(10,2);
end
end
In which I just preallocate CMC_T with NaN values, because the 2 vectors I want to put in the matrix have different lengths.
However when I try to fill them up:
for a = 1:length(temp)
for k = 1:NSensors
CMC_RT(k).RF.GyrNorm = CMC_RTT.RF.(temp{a})(k,1:10)';
CMC_RT(k).RF.GyrNorm(:,2) = CMC_RTT.RF.(temp{a})(k,11:19)';
end
end
Matlab gives me the error: Unable to perform assignment because the size of the left side is 10-by-1 and the size of the right side is 9-by-1.
Which obviously makes sense, but I would think matlab would just fill the NaN matrix with the numbers and leave the NaN values for the ones where there is no substitute value. But this was apparently whishful thinking...
Any help on a idea for a solution would be much appreciated.
Thank you!
0 commentaires
Réponse acceptée
Stephen23
le 18 Oct 2019
CMC_RT(k).RF.GyrNorm(1:10,1) = CMC_RTT.RF.(temp{a})(k,1:10);
CMC_RT(k).RF.GyrNorm(1:9,2) = CMC_RTT.RF.(temp{a})(k,11:19);
The complex conjugates are not required.
6 commentaires
Stephen23
le 27 Oct 2021
Modifié(e) : Stephen23
le 27 Oct 2021
"I should do something like this?"
One loop should be sufficient:
n = cellfun(@numel,t);
m = nan(numel(t),max(n));
for k = 1:numel(t)
m(k,1:n(k)) = t{k};
end
This code assumes that cell array t and its content are vectors.
Alternatively you could download this: https://www.mathworks.com/matlabcentral/fileexchange/22909-padcat
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Particle & Nuclear Physics 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!