确定。我有一个简单的问题,虽然我还是相当新的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)
答案 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)
如果您的date
和time
变量实际上代表日期(天数,月数,年数)和时间(小时,分钟,秒),则可以将它们打包成一个或两个数字。
查看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]);
一旦你有这个序列日期,你可以将它保存在一个带有其他数字的向量中。