Zero pad vectors within cell array to make them equal length
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)]
end
end
It gave me the follwing error:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Then I tried the solution from the post here as follows:
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 horzcat
Dimensions 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?
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
I do not know what the dimensions of ‘sigvecarray’ are, however I assume they are all column vectors.
If so, replace the (,) with a (;) here, and it should work (unless there are also other problems):
signalvectors{k} = [sigvecarray{k}; zeros(padding, 1)]
All of these — including this:
padfun = @(k) [sigvecarray{k} zeros(maxsamples(k) - origsamplesarray(k), 1)] ;
function — are concatenating something with a column vector, that column vector being defined as:
zeros(maxsamples(k) - origsamplesarray(k), 1)
READ MORE: