如何对本身包含 1x17 个单元格的每个单元格执行函数?

How to perform functions on each cell containing 1x17 cells in itself?

我有一个大小为 1x128 的嵌套元胞数组 'y2a',每个元胞包含大小为 1x17 的元胞数组。

例如:y2a{1,1} 是一个 1x17 单元格 array.Similarly y2a{1,2} 等等。

我必须使用以下公式将每个子元胞数组中的数据相乘(即;y2a{1,1} 或 y2a{1,2}...等)

  for cells 1-7 
   S=(celldata)*(2^(7-i))
  for cells 8-16
   S=(celldata)*(2^(7-i))

其中 'i' 是 cell.Since 的位置,只有 17 个子单元并且仅使用其中的 16 个 i 的值在 (1,16) 之间变化。

y2a 中的每个嵌套单元格都有一个 1 位二进制数作为其数据。

我想对每个 y2a 中存在的所有嵌套单元格执行上述功能。 我尝试了以下代码来执行此

   Y=y2a{1,1}
   for j=1:1:7
       S1(1,j)=(Y(1,j))*(2^(7-j))
   end
   for k=8:1:16
       S2(1,k)=(Y(1,k)*(2^7-k))     
    end

这似乎适用于一个单元格,但要对所有单元格执行此操作,我在形成 for loop.How 时遇到了麻烦,我应该在 matlab 中这样做吗?

首先使用以下代码将嵌套元胞数组转换为二维矩阵

A = reshape(cell2mat([y2a{:}]),[],numel(y2a)).';

你也可以看看下面的link因为我也问过类似的问题

然后使用

执行所需的操作
B=num2cell(A);%convert it into a 2D matrix of size 128x17

for i3=1:1:128
for j = 1:1:7
S1{i3,j} = (B{i3,j})*(2^(7-j))
end
end

for i4=1:1:128
for k = 8:1:16
S2{i4,k} = (B{i4,k})*(2^(k-7))
end
end

你可能会得到输出