Arrays 如何在matlab中向多维单元数组中插入值?

Arrays 如何在matlab中向多维单元数组中插入值?,arrays,matlab,for-loop,indexing,cell-array,Arrays,Matlab,For Loop,Indexing,Cell Array,我有一个单元格数组,定义为a=单元格(I,8) 说i=4。现在我试图用循环中的函数填充4x8单元数组 说 其中,C{i},D{i},E{i}的值为 C{i} = [10] [10] [10] [10] D{I} = [13] [13] [13] [13] E{I} = [62] [91] [71] [89] 单元格的内容显然是零,因为我使用了zeros(),但我需要这一步进行进一步的处理 现在,我应该得到(单元数组)-4x8维的值,如下所示

我有一个单元格数组,定义为
a=单元格(I,8)

i=4
。现在我试图用循环中的函数填充4x8单元数组

其中,C{i},D{i},E{i}的值为

C{i} = [10]    [10]    [10]    [10]
D{I} = [13]    [13]    [13]    [13]
E{I} = [62]    [91]    [71]    [89]
单元格的内容显然是零,因为我使用了zeros(),但我需要这一步进行进一步的处理

现在,我应该得到(单元数组)-4x8维的值,如下所示

10x13x62 double10x13x62 double  10x13x62 double 10x13x62 double 10x13x62 double 10x13x62 double 10x13x62 double 10x13x62 double
10x13x91 double 10x13x91 double 10x13x91 double 10x13x91 double 10x13x91 double 10x13x91 double 10x13x91 double 10x13x91 double
10x13x71 double 10x13x71 double 10x13x71 double 10x13x71 double 10x13x71 double 10x13x71 double 10x13x71 double 10x13x71 double
10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double
相反,我得到的输出是

[]  []  []  []  []  []  []  []
[]  []  []  []  []  []  []  []
[]  []  []  []  []  []  []  []
10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double 10x13x89 double
我希望在循环和单元数组后面缺少一些简单的逻辑,我对单元数组和循环的初始化是否正确?如果没有,请建议我找到一个像我上面提到的解决方案


谢谢。

第一件事
A{i,index}=0(C{i},D{i},E{i})不正确,因为
zero()
不接受数组作为参数

此代码将解决您的问题

i=4;
A = cell(i,8);

C{i} = {10,10,10,10};
D{i} = {[13]    [13]    [13]    [13]};
E{i} = {[62]    [91]    [71]    [89]};
for j=1:8
 for index=1:4
    A{index,j} = zeros(cell2mat(C{i}(index)), cell2mat(D{i}(index)), cell2mat(E{i}(index)));        
 end
end
这是输出

A =

  4×8 cell array

  Columns 1 through 6

    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]
    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]
    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]
    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]

  Columns 7 through 8

    [10×13×62 double]    [10×13×62 double]
    [10×13×91 double]    [10×13×91 double]
    [10×13×71 double]    [10×13×71 double]
    [10×13×89 double]    [10×13×89 double]

正如你自己所说,
i
等于
4
。你怎么期望A{i,index}=0(C{i},D{i},E{i})
将值存储在第4行以外的行中?首先,感谢您的回复Sardar,我有点困惑,因为当我创建
a=cell(i,8)时
它创建了一个
1x8
单元数组,因此我确信单元数组已经正确初始化,但是我在循环中的某些地方搞砸了,我应该如何重新写入
a{i,index}=zero(C{i},D{i},E{i})以获得预期的输出?你能帮忙吗?非常感谢你提供的宝贵信息Sardar。。非常感谢muchHi Sardar,很抱歉再次打断,我已经按照u所说的更改了代码,但是
4x8
单元数组中的所有单元都变成了
10x13x89双精度
。相反,它应该是
10x13xN
,N应该分别取'C{I},D{I},E{I}的值,如上所述,但是它只存储E{I}的值,敬请建议。Hi Nagdawi,我用上面的逻辑u尝试了它,但它作为非单元数组对象的
单元内容引用抛出了错误,仅供参考,我提供的这段代码已经在i=1:n文件的
循环中,因此,我希望没有必要为index=1:4的
循环添加
。因此,我只是将代码行重新编写为
A{i,J}=zeros(cell2mat(C{i}(i)),cell2mat(D{i}(i)),cell2mat(E{i}(i))
C{I},D{I},E{I}的值是动态的,对于I=1:nfiles`,它对每个文件都是变化的。请提供您对上述内容的建议。您将索引=1:4的
替换为什么?为什么?我写这段代码只是为了向您展示如何将相同的输出附加到您的问题上。从我的ans中,你可以根据你的问题影响你的逻辑。非常感谢Nagdawi,它成功了:)…我非常感谢你的帮助
A =

  4×8 cell array

  Columns 1 through 6

    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]    [10×13×62 double]
    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]    [10×13×91 double]
    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]    [10×13×71 double]
    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]    [10×13×89 double]

  Columns 7 through 8

    [10×13×62 double]    [10×13×62 double]
    [10×13×91 double]    [10×13×91 double]
    [10×13×71 double]    [10×13×71 double]
    [10×13×89 double]    [10×13×89 double]