【问题标题】:Is it possible to make an array of vectors in MATLAB?是否可以在 MATLAB 中制作向量数组?
【发布时间】:2020-05-26 19:32:01
【问题描述】:

我需要创建一个循环,在该循环中我需要在向量的末尾添加值,所以每次我需要使用(end+1),但我需要做几次而且我不想做为此有很多表。通过这种方式,我需要向量数组,例如在 c++ 中。在 c++ 中,你只使用 [1][2] 来实现这一点,这很好,但我不知道如何在 MATLAB 中做到这一点。我不能只制作静态矩阵,因为我的点是在 while true 循环中生成的,并且我实时绘制绘图。我正在尝试这样的事情:

tab = [4, []];

但它不起作用。有任何想法吗?谢谢

【问题讨论】:

    标签: arrays matlab matrix vector


    【解决方案1】:

    据我所知,这种情况在 Matlab 中很难处理。 你可以有一个verctors数组,因为内部verctors的大小相同,否则你会得到一个错误:

    >> a = [2];
    >> b = [2,3,4]
    b =
         2     3     4
    >> c = [a;b]
    Error using vertcat
    Dimensions of arrays being concatenated are not consistent. 
    

    现在,如果a 的大小与b 相同...:

    >> a = [2,2,3];
    % with ; be is put in a new row
    >> c = [a;b]
    c =
         2     2     3
         2     3     4
    % using , or space the concatenation is horizontal
    >> c = [a,b]
    c =
         2     2     3     2     3     4
    >> c = [a b]
    c =
         2     2     3     2     3     4
    

    如果您只想将值附加到 c,只需执行以下操作:

    >> c = [c 9]
    c =
         2     2     3     2     3     4     9
    

    如果可能,我建议您使用cell 结构。您需要事先定义 cell 数组,但它可以存储多个不同大小的向量:

    >> cell1 = cell(2)
    cell1 =
      2×2 cell array
        {0×0 double}    {0×0 double}
        {0×0 double}    {0×0 double}
    >> cell1{1} = c
    cell1 =
      2×2 cell array
        {1×7 double}    {0×0 double}
        {0×0 double}    {0×0 double}
    >> cell1{2} = a
    cell1 =
      2×2 cell array
        {1×7 double}    {0×0 double}
        {1×3 double}    {0×0 double}
    >> cell1{2}
    ans =
         2     2     3
    

    希望对你有帮助...

    【讨论】:

    • 非常感谢。有用。我搜索了所有页面,但找不到像您所做的那样好的解释
    • 很高兴它有帮助。请不要忘记设置为“答案”。
    • 另请注意,您可以索引 cell1{1}(2) 以匹配 OP 在问题中使用的 C++ 索引 [1][2]。
    【解决方案2】:

    元胞数组的替代方法是使用结构体数组。例如,您可以定义

    a = [2];
    b = [2,3,4]
    c = [b;b]
    d = [a,b]
    

    然后设置如下结构。它否定了使用大括号

    myStruct = struct()
    myStruct(1).myVector = a
    myStruct(2).myVector = b
    myStruct(1).myVector2 = c
    myStruct(2).myVector2 = d
    

    然后r_b和r_c下面“拉出”b和c

    r_b = myStruct(2).myVector
    r_c = myStruct(1).myVector2
    

    【讨论】:

    • 那就是myStruct(1,2).myVector。并不比使用花括号更整洁。
    • @CrisLuengo:将我的答案更新为更正确......我的原件返回了一个结构。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2013-07-02
    • 1970-01-01
    • 2013-08-25
    • 2011-07-18
    • 2016-11-21
    相关资源
    最近更新 更多