是否可以在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_b
和 r_c
"拔出 "b和c以下
r_b = myStruct(2).myVector
r_c = myStruct(1).myVector2
以上是关于是否可以在MATLAB中做一个向量数组?的主要内容,如果未能解决你的问题,请参考以下文章