【发布时间】:2020-09-22 00:28:08
【问题描述】:
我想在循环中创建一个结构。这是最初的命令行:
for i = 1:n
if condition
myStruct(i).a = i:
myStruct(i).b = 1:
else
myStruct(i) = myFunction(i):
end
end
myFunction 如下:(真正的有更多字段)
function myStruct = myFunction(i)
myStruct.a = i;
myStruct.b = 0;
end
当第一个循环 (i=1) 的条件为真时,它可以正常工作,否则第一个分配会出错,如下所示:
subscripted assignment between dissimilar structures.
为了应对它,我按照以下方式进行操作,但我正在寻找更好更有效的解决方案。
for i = 1:n
if condition
myStruct(i).a = i:
myStruct(i).b = 1:
else
if i == 1
myStruct = myFunction(i);
else
myStruct(i) = myFunction(i):
end
end
end
但我更喜欢一些较短的解决方案。我很感激任何建议。
【问题讨论】:
-
你似乎只需要
for k=1:n, myStruct(k) = myFunction(k); end -
@SardarUsama 我如何得到错误并尝试使用 if 块修复它。
-
如果你先做
temp = myFunction(i);然后myStruct(i)=temp会有效吗? -
@hyiltiz 不。我试过了,同样的错误。当 myStruct 仍然为空时,无论如何都无法建立索引。