Get Two Cell Arrays To Same Size
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello friends,
I have two cell arrays which I intend to eventually subtract from one another.
However, I have discovered they are of the same size but not same length (both attached). The cell arrays are both of size 181x1 with nested values of 44x95(double) except for the last two in the other file ('typevector_filtered').
I want to pad the empty values (in 'typevector_filtered') with zeros (0s) so that this cell array is the exact same size as the other one ('velocity_magnitude').
Any help kindly?
My attempts using this code (below) do not yield the same size (see image attached, last two rows end up being 95x1 double instead of 44x95double):
M = max(cellfun(@length, typevector_filtered));
>> Wanted = cellfun(@(x) [x; zeros(M - numel(x), 1)], typevector_filtered, 'un', 0);
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/572837/image.jpeg)
Thank you.
0 commentaires
Réponse acceptée
KSSV
le 5 Avr 2021
Modifié(e) : KSSV
le 5 Avr 2021
load typevector_filtered.mat
S = size(typevector_filtered{1}) ;
for i = 1:length(typevector_filtered)
if ~isequal(size(typevector_filtered{i}),S)
typevector_filtered{i} = zeros(S) ;
end
end
Or, using Cellfun (which also uses loop inside)
load typevector_filtered.mat
S = size(typevector_filtered{1}) ;
P = cell2mat(cellfun(@size,typevector_filtered,'UniformOutput',false)) ;
[c,ia] = ismember(P,S,'rows') ;
idx = find(c==0) ;
typevector_filtered(idx) = {zeros(S)} ;
5 commentaires
KSSV
le 5 Avr 2021
N = length(typevector_filtered) ;
iwant = cell(N,1) ;
for i = 1:N
iwant{i} = typevector_filtered{i} - velocity_magnitude{i} ;
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Biological and Health Sciences 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!