【问题标题】:Matlab store matrix in cellMatlab在单元格中存储矩阵
【发布时间】:2016-05-18 18:26:20
【问题描述】:

我有一个函数可以返回我想存储在单元格中的信息矩阵,但是无论我如何尝试它都会给我各种错误或结果不正确,我的最新尝试如下所示:

bbag=[]
for j=3:100
    bag=rand(randi([1 5]),randi([1 5]))%stand in for more complex function that normally returns between 1 and 4 
    [dontcare,y] = size(bag);
    tbag={bag(1,1),bag(2,1),bag(3,1),bag(4,1),bag(4,1)}
    for i=2:y
        tbag=[tbag,{bag(1,i),bag(2,i),bag(3,i),bag(4,i)}]; %some kind of loop is probably required here 
    end
    bbag=vertcat(bbag,tbag)
    labels(i) = 1;
end

但是当数据包含 4 个数据列以外的任何内容时,这无法处理,如果它只设法将所有数据附加到同一行,而不是将其放在自己的单元格中,任何想法如何做到这一点最后我可以要求bbag(2,3) 然后返回一个包含 1 到 5 个值的单元格吗?如果我将大小固定为 4,那么我会得到一个 98×17 的单元块(而不是我期望的 98x4x4)。有什么想法吗?

【问题讨论】:

  • 我想我得到了答案,我会做一些测试,很快就会发布答案
  • 小提示:用y = size(bag,2);代替[dontcare,y] = size(bag);。你也可以用~替换这样的dontcare返回变量。

标签: arrays matlab


【解决方案1】:

bag=rand(randi([1 5]),randi([1 5]));

您创建一个随机大小的随机矩阵(即随机的行数和列数)。我不知道这些错误是否与单元格数组的创建有关;它们与您访问的事实有关,例如来自bag 的第 3 行,而没有确保您实际上 3 行。

另外,请查看mat2cell 的文档,以将矩阵拆分为不同大小矩阵的元胞数组(如果这确实是您要查找的内容)。

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多