如何更改struct数组的所有元素,哪些具有一定的字段值?

时间:2015-10-29 09:56:18

标签: arrays matlab structure

想象一下,我们有一系列结构:

S=repmat(struct('a1',0,'a2', 0, 'a3', 0, ...), N, 1 );  

我需要将具有特定字段值的所有元素(例如字段a1 = k)更改为具有该字段的另一个值的元素(例如字段a1 = m)。换句话说,如果S(i).a1 == k => S(i).a1 = m。而且我需要非常快速地完成它,所以没有适合我的循环。我试图找到一个解决方案,这就是我找到的。命令:

S([S.a1]==k)

返回一个数组,其中包含字段a1等于k的所有元素。但是,如果我在这个数组中改变一些东西,当然,在初始数组S中什么都不会发生。所以我试着做一些明显的动作:

S([S.a1]==k).a1 = m

不幸的是,MATLAB不明白这一点:

Insufficient outputs from right hand side to satisfy comma separated list expansion on left hand side.  Missing [] are the most likely cause.

(我试图将括号放在任何地方 - 没有帮助)

有没有办法在没有循环的情况下做到这一点(理想情况下,它应该尽可能快地工作)?有类似structfun的东西吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

与使用括号括起$path = "/212.120.15.80/tmp/NMJ.pdf"; //Path to unix server $url = $_FILES [$fileElementName] ['tmp_name']; $newfname = $path; $file = fopen ( $url, "rb" ); if ($file) { $newf = fopen ( $newfname, "wb" ); $fopen = $newf; if ($newf) { while ( ! feof ( $file ) ) { fwrite ( $newf, fread ( $file, 1024 * 8 ), 1024 * 8 ); } } } if ($fopen === false) { $return_fopen = 'Fichier non téléchargé'; } else { $return_fopen = 'Le fichier a été déposé sur le serveur'; } if ($file) { fclose ( $file ); } if ($newf) { fclose ( $newf ); } 以将多个输出连接到向量的方式相同,您需要包装[S.a1]。然后,在deal函数的帮助下,您可以将单个输入S([S.a1]==k).a1复制到多个输出。使用正确的synthax的最终解决方案如下所示:

m