相关疑难解决方法(0)

通过Matlab中的另一个结构更新struct

我想知道是否有一种方便的方法来更新结构与Matlab中的另一个结构的值.下面是代码,与使用fieldnames,numel以及for循环,

fn = fieldnames(new_values);
for fi=1:numel(fn)
    old_struct.(fn{fi}) = new_values.(fn{fi});
end
Run Code Online (Sandbox Code Playgroud)

当然,我不希望失去在田野old_struct中没有的new_values,所以我不能用简单old_struct=new_values.

更新结构是我们可能想要在解释器中的单个短行中执行的操作.

matlab struct

8
推荐指数
1
解决办法
4523
查看次数

如何在Matlab中向结构数组添加新元素?

如何向结构数组添加新元素?我无法与空结构连接:

>> a=struct;
>> a.f1='hi'

a = 

    f1: 'hi'

>> a.f2='bye'

a = 

    f1: 'hi'
    f2: 'bye'

>> a=cat(1,a,struct)
Error using cat
Number of fields in structure arrays being concatenated do not match. Concatenation of structure arrays requires that these arrays have the same set of
fields.
Run Code Online (Sandbox Code Playgroud)

那么是否可以添加具有空字段的新元素?

更新

我发现如果我同时添加新字段,则可以添加新元素:

>> a=struct()

a = 

struct with no fields.

>> a.f1='hi';
>> a.f2='bye';
>> a(end+1).iamexist=true

a = 

1x2 struct array with fields:

    f1
    f2
    iamexist
Run Code Online (Sandbox Code Playgroud)

令人难以置信的是,没有直接的方法!可能有一些冒号等效的结构吗?

arrays matlab struct

5
推荐指数
2
解决办法
4万
查看次数

如何在Matlab中简单地将具有不同字段的两个结构连接起来?

有没有简单的方法可以组合以下两个结构,而无需使用for循环或CELLFUN?

struct1 = 

    a: {43x1 cell}

struct2 = 

    b: [43x1 double]
    c: {43x1 cell}
Run Code Online (Sandbox Code Playgroud)

我想要这样的组合结构:

struct3 = 

    a: {43x1 cell}
    b: [43x1 double]
    c: {43x1 cell}
Run Code Online (Sandbox Code Playgroud)

matlab struct

2
推荐指数
1
解决办法
1万
查看次数

在matlab中合并结构字段单元格

我希望在我进行部分计算的情况下合并结构字段,以便稍后填充整个结构字段单元格.

根据索引将结果放入细胞中,如下所示:

for i=3:4;
results1.index{i}=i;
results1.sqr{i}=i*i;
end
for i=1;
results2.index{i}=i;
results2.sqr{i}=i*i;
end
Run Code Online (Sandbox Code Playgroud)

分别给予:

results1 = 

    index: {[]  []  [3]  [4]}
      sqr: {[]  []  [9]  [16]}

results2 = 

    index: {[1]}
      sqr: {[1]}
Run Code Online (Sandbox Code Playgroud)

有没有办法合并得到的结果结构

allresults.index={[1] [] [3] [4]}
allresults.sqr={[1] [] [9] [16]}
Run Code Online (Sandbox Code Playgroud)

我可以避免重叠结果,因此在没有冲突的情况下(例如,没有单元格为空)没有冲突解决或覆盖就可以了.请注意,在较大的数据集中,单元格不限于标量,但可能包含单元格或其他类型.

merge matlab field structure

2
推荐指数
1
解决办法
111
查看次数

标签 统计

matlab ×4

struct ×3

arrays ×1

field ×1

merge ×1

structure ×1