想象一下,我们有一系列结构:
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
的东西吗?
提前致谢。
答案 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