动态变量声明
回答
有一个assignin
函数,它接受一个变量名,并为其分配一个特定的值:
for r = 1:size (DATA, 1)
assignin ('caller', DATA{r,:});
end
你可以做,使用eval
for ii = 1:size(DATA,1)
eval([DATA{ii,1}, ' = ', num2str(DATA{ii,2})]);
end
然而,使用eval
是not recommended。
您可以使用动态字段名改为:
s = cell2struct(DATA(:,2), DATA(:,1), 2);
这不会涵盖变量不是矢量的情况,例如ND矩阵(甚至2D矩阵),单元阵列,结构等。 – carandraug
+1有时'eval'是要走的路线 –
@carandraug you是对的。我使用'num2str'而不是我个人最喜欢的'sprintf'来覆盖简单的向量。但'eval'在这里确实有局限性。也许与'disp'结合?我更喜欢动态名称结构... – Shai
- 1. 声明变量动态
- 2. Unity3D动态变量声明
- 3. 在VB.net中动态声明变量
- 4. 动态声明变量名称
- 5. 声明变量动态在PHP
- 6. 在javascript中动态声明变量名
- 7. 声明动态SqlParameter变量(C#)
- 8. 从表中声明动态变量
- 9. SAS动态声明宏变量
- 10. 自动变量声明PHP
- 11. 我想使用动态SQL中声明的动态变量
- 12. 变量声明
- 13. 声明变量
- 14. 变量声明
- 15. 声明变量
- 16. 变量声明
- 17. 变量声明?
- 18. 声明变量
- 19. 声明变量
- 20. 动态声明
- 21. 必须声明标量变量“@query”动态tsql存储过程
- 22. SQL服务器 - 声明的变量(ANOVA)动态量
- 23. 声明全局静态变量
- 24. 静态变量声明的时间
- 25. 声明静态变量在单
- 26. 声明和放置静态变量
- 27. 在函数中声明静态变量
- 28. 如何声明静态变量
- 29. ios - 如何声明静态变量?
- 30. 必须声明标量变量/变量已经声明
这不会在一个功能正常工作。或者更糟糕的是,它会产生意想不到的结果:变量将被分配在“base”中,而不是在函数的上下文中:O – Shai
@Shai ups!你是对的。我误解了'base'和'caller',我认为调用者在堆栈中下了1级,并且基于当前范围。 – carandraug