将结构类型转换为矩阵八度

Shy*_*dka 0 file-io matlab struct octave mat-file

我有一个myfile.mat包含3000x35大小数据的文件。当我将其加载到变量中时:

a = load('myfile.mat')
Run Code Online (Sandbox Code Playgroud)

它给出struct了大小1x1。我怎样才能得到确切的形式作为矩阵。这是必需的,因为我需要更改某些列值。

Dev*_*-iL 5

(此答案对MATLAB有效,我不确定它在Octave中的工作方式是否完全相同)


您有几种选择:

选项1:

如果.mat文件仅包含一个变量,则可以执行以下操作:

a = struct2array(load('myfile.mat'));     % MATLAB syntax
a = [struct2cell(load('myfile.mat')){:}]; % Octave syntax
Run Code Online (Sandbox Code Playgroud)

选项2:

您需要在保存时知道变量的名称,现在它是this中字段的名称struct。然后,您可以使用以下命令访问它:

a = load('myfile.mat'); a = a.data;
Run Code Online (Sandbox Code Playgroud)

选项3(不建议使用!):

只需删除a =表达式的一部分,

load('myfile.mat');
Run Code Online (Sandbox Code Playgroud)

然后,该文件中的变量将“神奇地生成”在您的工作空间中。不建议这样做,因为它使创建某些变量时很难(不可能?)。