I need to combine two channels of cell arrays into a single matrix for processing. The two channels should be the same size but in some cases not - how can I change the size?
30 views (last 30 days)
Show older comments
channelData = cell(2, 1);
........
I have tried code like this but it states the concatenation dimesnions are inconsistent:
% Ensure both channels have the same number of samples
numSamplesCh1 = length(channelData{1});
numSamplesCh2 = length(channelData{2});
if numSamplesCh1 > numSamplesCh2
numSamplesCh1 = numSamplesCh2;
mycell = trimdata(channelData,numSamplesCh1);
else
numSamplesCh2 = numSamplesCh1;
mycell = trimdata(channelData,numSamplesCh2);
end
combinedData = [channelData{1}, channelData{2}];
The above code combines the channels but in some cases they are wrong size. How can I resize the ChannelData{1} and ChannelData{2} so they are the smallest size of the two (please)?
0 Comments
Accepted Answer
Voss
on 6 Nov 2024 at 23:33
Edited: Voss
on 7 Nov 2024 at 18:07
Assuming that channelData is a 2-element cell array, that channelData{1} and channelData{2} are both column vectors, and you want to combine them into a matrix with two columns, then you can use trimdata to do so like this:
% n: length of shorter vector
% idx: index (1 or 2) of shorter vector in channelData
[n,idx] = min([numel(channelData{1}) numel(channelData{2})]);
% trim the longer vector (3-idx makes 1 become 2 and vice versa) to length n
channelData{3-idx} = trimdata(channelData{3-idx},n);
% combine the vectors into an n-by-2 matrix
combinedData = [channelData{:}];
If you don't want to overwrite channelData, then use a temporary variable instead:
tmp = channelData;
tmp{3-idx} = trimdata(tmp{3-idx},n);
combinedData = [tmp{:}];
Your mistake was using trimdata to trim the cell array channelData itself rather than the contents of one of its cells (i.e., channelData{1} or channelData{2}, whichever is longer). That and not using the assigned output mycell, so that you were not actually modifying channelData at all before attempting to concatenate its contents.
2 Comments
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!