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

Arrays 如何在矩阵中获得多个数,arrays,matlab,matrix,numbers,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 考虑使用矩阵而不是矩阵来完成任务 data = cell(6,1); % allocate cell data{1} = eve

嗯。我有一个简单的问题,尽管我对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 
考虑使用矩阵而不是矩阵来完成任务

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.
考虑使用矩阵而不是矩阵来完成任务

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.

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

我将建议两件事来实现这一点:矩阵和单元数组

细胞阵列 在Matlab中,
单元
数组是任意类型数据的容器。您可以使用大括号(与矩阵的块大括号相反)来定义它。那么比如说,

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};
矩阵 根据使用位置的不同,法线矩阵也可能足够:

M = [0  0  0  0 
     event_marker  0  0  0 
     event_count  0  0  0
     block_number  0  0  0 
     321 12  0  0
     4 30 17 19];
注意,您需要一些填充(也就是说,您必须以某种方式在右上角添加这些零)。有很多方法可以做到这一点,但我将“把它作为一种练习”:


同样,这一切都取决于上下文,哪一个更容易

如果我理解正确,您需要一个包含6个元素的数组,其中1个元素等于
1
,另一个元素是数组
[312,12]
,最后一个元素是数组
[4,30,17,19]

我将建议两件事来实现这一点:矩阵和单元数组

细胞阵列 在Matlab中,
单元
数组是任意类型数据的容器。您可以使用大括号(与矩阵的块大括号相反)来定义它。那么比如说,

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};
矩阵 根据使用位置的不同,法线矩阵也可能足够:

M = [0  0  0  0 
     event_marker  0  0  0 
     event_count  0  0  0
     block_number  0  0  0 
     321 12  0  0
     4 30 17 19];
注意,您需要一些填充(也就是说,您必须以某种方式在右上角添加这些零)。有很多方法可以做到这一点,但我将“把它作为一种练习”:


同样,这一切都取决于上下文,哪一个更容易

如果您的
日期
时间
变量实际上表示日期(天数、月数、年数)和时间(小时、分钟、秒),则可以将它们压缩为一个或两个数字

研究功能。如果有一个向量,例如,
[2013,4,10]
,表示2013年4月10日,则可以将其转换为序列日期:

daten = datenum([2013, 4, 10]);
如果一年中有几天,而不是几个月,这没关系
datenum([2013,0300])
也可以使用

时间可以与日期一起打包,也可以单独打包:

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

一旦你有了这个序列日期,你就可以把它和其他数字放在一个向量中


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

如果您的
日期
时间
变量实际上表示日期(天数、月数、年数)和时间(小时、分钟、秒),则可以将其压缩为一个或两个数字

研究功能。如果有一个向量,例如,
[2013,4,10]
,表示2013年4月10日,则可以将其转换为序列日期:

daten = datenum([2013, 4, 10]);
如果一年中有几天,而不是几个月,这没关系
datenum([2013,0300])
也可以使用

时间可以与日期一起打包,也可以单独打包:

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

一旦你有了这个序列日期,你就可以把它和其他数字放在一个向量中


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

您所说的“在一个框中”是什么意思?当您在工作区中单击变量时,它通常会显示一个矩阵数字。如果变量有多个数字,它会在下一个单元格中创建它。在我的例子中,我喜欢有两个数字的变量,即日期和时间,将这两个数字放在一个单元格中,而不是为每个数字创建自己的单元格查找单元格数组:@Dan,你明白我的问题吗?@Stokes,是的,我很确定。下面的两个答案也说明了同样的问题。你所说的“在一个框中”是什么意思?当你在工作区中点击一个变量时,它通常会显示一个矩阵数字。如果变量有多个数字,它会在下一个单元格中创建它。在我的例子中,我喜欢有两个数字的变量,即日期和时间,将这两个数字放在一个单元格中,而不是为每个数字创建自己的单元格查找单元格数组:@Dan,你明白我的问题吗?@Stokes,是的,我很确定。下面的两个答案也说明了同样的问题。天哪,谢谢@Shai,我一直在寻找def。我不知道如何在这方面给你打分。你能给我看看吗?@Stokes:只要点击某人答案左边大数字上方的“向上”箭头就可以了。这将“向上投票”答案,给回答者10分,并影响问题所有答案的显示顺序。此外,你可以“接受”你认为最好的答案,它会给回答者15分,并把答案放在最上面(不管所有答案的上下投票数是多少)。另外,请通读:)天哪,谢谢@Shai,我一直在寻找def。我不知道如何在这方面给你打分。你能给我看看吗?@Stokes:只要点击某人答案左边大数字上方的“向上”箭头就可以了。这将“向上投票”答案,给回答者10分,并影响问题所有答案的显示顺序。此外,你可以“接受”你认为最好的答案,这会给你15分。