【问题标题】:How to store some grouped values in an array, vector or matrix structure in matlab?如何在matlab中将一些分组值存储在数组、向量或矩阵结构中?
【发布时间】:2014-01-06 08:32:02
【问题描述】:

我的问题是将一些可变数量的值组作为一维存储在数组、向量或 matlab 中的矩阵中。

如果我们认为这些值是这样的:

1 1 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 6 6 6 6 6....

我想将它们动态地保存在一个结构中,因为每个组都是该结构的一个元素,例如:

    a = [1 1 1 1 1 1 1 1]
    b = [2 2 2 2 2]
    c = [3 3 3 3 3 3 3]
    d = [4 4 4 4 4 4 4]
    e = [5 5 5]
    f = [6 6 6 6 6]

    x = [a,b,c,d,e,f]

我该怎么做?

【问题讨论】:

  • 您需要为此使用元胞数组。但是您可以使用run-length coding 更紧凑地执行此操作

标签: arrays matlab vector matrix


【解决方案1】:

使用结构:

>> myStruct.a = [1 1 1 1 1 1 1 1];
>> myStruct.b = [2 2 2 2 2];
>> myStruct.c = [3 3 3 3 3 3 3];
>> myStruct.d = [4 4 4 4 4 4 4];
>> myStruct.e = [5 5 5];
>> myStruct.f = [6 6 6 6 6]
myStruct = 
    a: [1 1 1 1 1 1 1 1]
    b: [2 2 2 2 2]
    c: [3 3 3 3 3 3 3]
    d: [4 4 4 4 4 4 4]
    e: [5 5 5]
    f: [6 6 6 6 6]

或者,如果您想对对象进行数字索引,请使用元胞数组:

>> myCell{1} = [1 1 1 1 1 1 1 1];
>> myCell{2} = [2 2 2 2 2];
>> myCell{3} = [3 3 3 3 3 3 3];
>> myCell{4} = [4 4 4 4 4 4 4];
>> myCell{5} = [5 5 5];
>> myCell{6} = [6 6 6 6 6];
>> myCell{:}
ans =
     1     1     1     1     1     1     1     1
ans =
     2     2     2     2     2
ans =
     3     3     3     3     3     3     3
ans =
     4     4     4     4     4     4     4
ans =
     5     5     5
ans =
     6     6     6     6     6

【讨论】:

  • 元胞数组更好。
  • @Shai:“更好”是“好”的敌人 :) 无论如何,我认为结构是 OP 所追求的,因为他的示例暗示了那个方向。但这真的取决于他的具体应用,哪个更好。
  • 单元阵列很有帮助。感谢您的所有回复。
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
相关资源
最近更新 更多