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

convert struct type to matrix octave

我有一个 myfile.mat 包含 3000x35 尺寸数据。当我将它加载到变量中时:

a = load('myfile.mat')

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

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


您有多种选择:

选项 1:

如果.mat文件只有一个变量,你可以这样做:

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

选项 2:

你需要知道保存时变量的名字,现在是这个struct中的一个字段的名字。然后您将使用以下方式访问它:

a = load('myfile.mat'); a = a.data;

选项 3(不推荐!):

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

load('myfile.mat');

然后此文件中的变量将 "magically spawn" 在您的工作区中。不推荐这样做,因为它很难(不可能?)查看某些变量何时创建。

我自己找到了解决方案。我喜欢这个

a = load('myfile.mat')
a = a.data

所以现在我可以通过索引访问 a as 矩阵的值,a(1,2) 就像这样。 它是八度的。我希望它在 matlab 中是相似的。