【发布时间】:2015-01-28 15:34:48
【问题描述】:
我有一个大小为 1x128 的嵌套元胞数组“y2a”,每个元胞都包含大小为 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 中执行?
【问题讨论】:
-
谁给你这个用于定点数二进制表示的丑陋数据结构?
-
你考虑过
cat(1,y2a{:})吗? -
@knedlsepp 它只是将大小为 1x128 的原始数组转换为 128x1 数组
-
您已经证明您知道如何在 matlab 中访问元胞数组的内容,并且您已经有了伪代码---将其转换为 matlab 代码的障碍在哪里?
-
@knedlsepp 是的,丑陋,而且难以置信效率低下。
标签: matlab function cell cell-array