How to perform multiplication in cells?
古いコメントを表示
Hello,
I have a cell array 'y2a' of size 1x128 with each cell containing another cell array of size 1x17(for eg: y2a{1,1} is a 1x17 cell array). I have to multiply the data in each sub-cell (ie; y2a{1,1} or y2a{1,2}...etc)using the following formula
Example:
for cells 1-7
S=(celldata)*(2^(7-i))
for cells 8-16
S=(celldata)*(2^(7-i))
where 'i' is the position of the cell.Since there are only 17 subcells and we use only 16 of them the value of i varies between (1,16).I have included an image of the cell array and the subcell array.

From the image we can clearly see that each cell in y2a have a 1x17 cell in itself. I want to perform the above function for all the subcells present in each y2a(i,i). This I need to do for all the 128 cells present. Is there any inbuilt function in matlab to perform this action? If not how do I do it. Please help. Thanks in advance.
3 件のコメント
Stephen23
2015 年 1 月 28 日
Do not use i or j for the names of loop variables like this, because they are both names for the inbuilt imaginary unit .
Guillaume
2015 年 1 月 28 日
If you're not doing any calculation involving complex numbers, it doesn't matter. Particularly in a function.
Stephen23
2015 年 2 月 1 日
"it doesn't matter": in the sense that the code will work, correct. However it is a bad habit that will be difficult to shake later when it really does matter.
採用された回答
その他の回答 (1 件)
Guillaume
2015 年 1 月 28 日
Why are you using cell arrays if the matrices they're holding are all the same size? You would be better off with a 128x17 matrix.
The formula you've posted is the same for cells 1-7 and 8-16. And what happens to element 17? Does it just get dropped?
newcell = cellfun(@(subcell) cell2mat(subcell) .* 2.^(7-1:numel(subcell)), y2a, 'UniformOutput', false); %or a variation thereof, once you've clarified what you want.
But honestly, I would just convert the whole lot into a matrix:
m = cell2mat(cellfun(@(subcell) cell2mat(subcell), y2a', 'UniformOutput', false);
newm = bsxfun(@times, m, 2.^(7-size(m, 2)));
カテゴリ
ヘルプ センター および File Exchange で Axis Labels についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!