matlab里数组的赋值,arrays – MATLAB结构赋值数组

我有一系列结构.让我们说

s(1).value,…,s(5).value.

我有一个值向量,让我们说vals = [1 2 3 4 5],我想分配给结构数组.所以用伪代码写我想要:s(:).value = vals.

如下所示,有一个已知的解决方案.但是真的不可能像在伪代码中那样在1行中进行这个赋值吗?

% Vector of values

vals = [1 2 3 4 5];

n = length(vals);

% Initialize struct

s(n).values = 0;

% Put vals into my struct.values

[s(1:n).values] = ???

% Known solution that i am not satisfied with:

vals_c = num2cell(vals);

[s(1:n).values] = vals_c{:};

最好的问候,乔纳斯

最佳答案 使用

cell2struct与num2cell相结合,可以在一行中完成此操作.

% Vector of values

vals = [1 2 3 4 5];

n = length(vals);

% Put vals into my struct.values

s = cell2struct(num2cell(vals), 'values', 1)

% transpose if orientation is important

s = s.';

它并不漂亮,但它确实在一条线上完成. cell2struct支持多个条目,因此您可以填充许多字段.

最大的缺点是它从头开始创建结构,因此如果需要将此数据添加到现有结构中,则必须进行结构合并.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值