如何在矩阵中获得多个数字

时间:2013-04-10 14:49:01

标签: arrays matlab matrix numbers

确定。我有一个简单的问题,虽然我还是相当新的Matlab(自学成才)。所以我想要一个1x6矩阵如下所示:

0

0

1

0

321, 12      <--- needs to be in one box in 1x6 matrices

4,30,17,19   <--- needs to be in one box in 1x6 matrices 

是否有可能这样做或者我只需要将它们全部写在单独的框中,从而使它成为1x10矩阵?

我的代码:

event_marker = 0;
event_count  = 0;
block_number = 1;

date = [321,12] % (its corresponding variables = 321 and 12)

time = [4,30,17,19] % (its corresponding variable = 4 and 30 and 17 and 19)

3 个答案:

答案 0 :(得分:3)

因此,如果我理解正确,您需要一个包含6个元素的数组,其中1个元素等于1,另一个元素是数组[312,12],最后一个元素是数组{{1 }}。

我建议做两件事:矩阵和单元格数组。

细胞阵列

在Matlab中,[4,30,17,19]数组是任意类型数据的容器。您可以使用花括号来定义它(而不是矩阵的块括号)。所以,例如,

cell

包含字符串(C = {'test', rand(4), {@cos,@sin}} ),普通矩阵(C{1})和包含函数句柄(C{2})的另一个单元格。

对于您的情况,您可以这样做:

C{3}

当然,

C = {0,0,1,0, [321,12], [4,30,17,19]};

矩阵

根据您使用它的位置,正常的矩阵也可能就足够了:

C = {0, event_marker, event_count, block_number, date, time};

请注意,您需要一些填充(意思是,您必须以某种方式在右上角添加这些零)。有很多方法可以做到这一点,但我会“把它留作练习”:)

同样,这一切都取决于一个人会更容易的背景。

答案 1 :(得分:1)

考虑使用cell arrays而不是矩阵来完成任务。

data = cell(6,1); % allocate cell
data{1} = event_marker; % note the curly braces here!
...
data{6} = date;   % all elements of date fits into a single cell.

答案 2 :(得分:0)

如果您的datetime变量实际上代表日期(天数,月数,年数)和时间(小时,分钟,秒),则可以将它们打包成一个或两个数字。

查看DATENUM函数。如果您有一个向量,例如[2013, 4, 10],代表2013年4月10日,您可以将其转换为序列日期:

daten = datenum([2013, 4, 10]);

如果您有一年中的天数,而不是几个月,那就没关系。 datenum([2013, 0, 300])也可以使用。

时间可与日期或单独包装在一起:

timen = datenum([0, 0, 0, 4, 30, 17.19]);

datetimen = datenum([2013, 4, 10, 4, 30, 17.19]);

一旦你有这个序列日期,你可以将它保存在一个带有其他数字的向量中。

您可以使用DATEVECDATESTR函数将此数字转换回日期向量或日期字符串。