是否可以在MATLAB中做一个向量数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在MATLAB中做一个向量数组?相关的知识,希望对你有一定的参考价值。

我需要做一个循环,在循环中我需要在向量的尾部加值,所以每次我需要使用 (end+1)但我需要做几次,而且我不想为此做很多表。在这种方式下,我需要像在C++中那样的向量数组。在C++中,你只需要使用 [1][2] 比如说,用MATLAB来实现这个功能,这很好,但我不知道如何在MATLAB中实现。我不能只做静态矩阵,因为我的点是在while true循环中生成的,我是实时画图的。我在尝试这样的东西。

tab = [4, []];

但它不工作。任何想法?谅谅

答案

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

>> 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 具有相同的大小o 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

我希望这能帮助你...

另一答案

单元格数组的另一种选择是使用结构数组。例如,你可以定义

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_br_c "拔出 "b和c以下

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

以上是关于是否可以在MATLAB中做一个向量数组?的主要内容,如果未能解决你的问题,请参考以下文章

matlab 定义数组问题?

MATLAB中向量数组的向量范数

MATLAB 是不是提供了一种更优雅的方式来遍历 3D 数组以获取 3 维向量?

Matlab - 使用矩阵作为数组向量的索引

排序向量查找的更快版本 (MATLAB)

转换向量索引超出数组边界 - matlab