我有一个嵌套的单元格阵列' y2a'大小为1x128,每个单元格包含大小为1x17的单元格数组。
例如:y2a {1,1}是1x17单元阵列。类似于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'是单元格的位置。因为只有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循环时遇到了麻烦。我应该如何在matlab中进行此操作?
答案 0 :(得分:0)
首先使用以下代码将嵌套单元格数组转换为2Dmatrix
A = reshape(cell2mat([y2a{:}]),[],numel(y2a)).';
你也可以看看下面的链接,因为我也问过类似的事情 How to separate data from nested cells?
然后使用
执行所需的操作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
你可能会得到输出