I have a cell array with vectors y1, y2, y3, y4, y5 which are of variable lengths. I get the maximum length among all elements in the cell array using:
sigvecarray = {y1, y2, y3, y4, y5};[maxsamples, idx] = max(cellfun(@numel, sigvecarray));
Now, I need to zero pad the shorter vectors with the differrence from maxsmaples and their own sample numbers.
I tried the following first:
signalvectors = {}for k = 1:numel(sigvecarray) currveclength = length(sigvecarray{k}) if currveclength < maxsamples padding = samples - currveclength signalvectors{k} = [sigvecarray{k}, zeros(padding, 1)] endend
It gave me the follwing error:
Error using horzcatDimensions of matrices being concatenated are not consistent.
origsamplesarray = cellfun(@numel, sigvecarray);padfun = @(k) [sigvecarray{k} zeros(maxsamples(k) - origsamplesarray(k), 1)] ;signalvectors = arrayfun(padfun, 1:numel(sigvecarray) , 'un', 0);
It gave me the following error:
Error using horzcatDimensions of matrices being concatenated are not consistent.Error in xcorr>@(k)[sigvecarray{k},zeros(maxsamples(k)-origsamplesarray(k),1)]
What am I possibly doing wrong above?
Best Answer