Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在不动态命名变量的情况下存储数据_Matlab - Fatal编程技术网

Matlab 如何在不动态命名变量的情况下存储数据

Matlab 如何在不动态命名变量的情况下存储数据,matlab,Matlab,我有40个变量。40个变量名称位于一个单元格数组(40 x 1)中 每个变量都有一个矩阵。矩阵为双矩阵,尺寸为5000 x 150。它还有一个大小为1 x 150的向量&最后一个向量为1 x 4 最初,我打算在单元格数组中用变量名动态命名每个结构。所以看起来像下面这样(假设变量名是ABC) 所有变量都将保存到一个目录中 然而,我读到使用eval不是一个很好的主意,所以猜测我的想法并不是解决这个问题的最佳方法。解决这个问题的最好办法是什么 您可以像@Shai和@RobertStettler建议的那

我有40个变量。40个变量名称位于一个单元格数组(40 x 1)中

每个变量都有一个矩阵。矩阵为双矩阵,尺寸为5000 x 150。它还有一个大小为1 x 150的向量&最后一个向量为1 x 4

最初,我打算在单元格数组中用变量名动态命名每个结构。所以看起来像下面这样(假设变量名是ABC)

所有变量都将保存到一个目录中


然而,我读到使用eval不是一个很好的主意,所以猜测我的想法并不是解决这个问题的最佳方法。解决这个问题的最好办法是什么

您可以像@Shai和@RobertStettler建议的那样,将
struct
数组与一起使用

但是,另一个选项是
。如果您希望在一个大矩阵中查看数据,那么这可能更具吸引力,并且您也可以为每个
行指定变量的名称!请注意,
中的行就是您所称的变量,但是MATLAB将
列称为其变量

还要注意,使用
可能比使用
结构
单元格
数组更困难,但如果您知道如何使用它们,您也可以处理

例如:

% create dummy data
rowNames = {'a';'b';'c'};
M = {ones(3); zeros(3); nan(3)}; % a cell, one element per item in rowNames
V = [1 2; 3 4; 5 6]; % a matrix of vectors, each row containing a vector for every item in rowNames

% create a table
T = table(M,V,'RowNames',rowNames); % this is where your variable names could go
现在,要访问数据,您可以使用(一些示例):

  • T(2,:)
    T('b',:)
    ,为
    'b'
    行上的所有数据返回一个
  • T(:,2)
    T(:,'V')
    ,为所有行返回变量
    V
  • T.V
    T{:,2}
    T{:,'V'}
    T.(2)
    ,返回所有行的矩阵
    V
    。此语法类似于访问
    结构的(动态)字段名
  • T{3,1}
    T{c',1}
    T.M('c')
    ,为行
    'c'
    返回
    单元格
    M
    。此语法类似于访问
    单元格
    ,但具有更高级的可能性,即通过行或变量名访问表的能力
  • T{3,1}{:}
    T{c',1}{:}
    T.M{c'}
    ,返回
    单元格
    内容
    M
    'c'
更复杂的是:
T('a',:).M{:}
是访问行
'a'
M
的单元格内容的一种复杂方式,也可以使用
T{1,1}{:}
T.M{'a}
T{'a','M}
T.M}
来完成


在您的例子中,您将创建一个
40x3表
,每一行您称之为变量,第一列为矩阵(在
单元格
数组中),最后两列为向量(以及
单元格
数组中或作为
40xm双精度
,m
是向量的长度).

为什么不使用结构数组?像ABC(i).dataMatrix
。不清楚为什么必须使用
eval
。为什么不使用?
% create dummy data
rowNames = {'a';'b';'c'};
M = {ones(3); zeros(3); nan(3)}; % a cell, one element per item in rowNames
V = [1 2; 3 4; 5 6]; % a matrix of vectors, each row containing a vector for every item in rowNames

% create a table
T = table(M,V,'RowNames',rowNames); % this is where your variable names could go