動態變量聲明
回答
有一個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