所以我想要做的是通過索引來參考不同的符號,就像使用向量一樣
syms k_1 k_2 k_3
for i= 1:3
'expression to get k_i'
end
期望的答案是 k1 k2 k3。
我不打算對sym函式創建的向量執行此操作,除非有辦法將矩陣分配給向量位置而不會出現此錯誤
.
uj5u.com熱心網友回復:
您可以將它們全部添加到結構中,然后對第 i 個欄位名稱使用動態參考:
% Create symbolic vars
syms k_1 k_2 k_3
% Assign to struct
K.k_1 = k_1;
K.k_2 = k_2;
K.k_3 = k_3;
% Loop through
for ii = 1:3
kstr = sprintf('k_%d', ii); % = 'k_1', 'k_2', ...
ki = K.(kstr); % equivalent to ki = K.k_1 etc
end
等效地,一旦您擁有結構,您就可以使用欄位名稱,盡管您在每次迭代中訪問哪個欄位不太明確。
f = fieldnames(K);
for ii = 1:numel(f)
ki = K.(f{ii});
end
uj5u.com熱心網友回復:
與@Wolfie 的回答類似,您可以使用單元格陣列:
syms k_1 k_2 k_3
k = {k_1, k_2, k_3};
for ii = 1:3
ki = k{ii};
end
這比struct解決方案要簡單一些,但不保留變數名。在這種情況下,k{1}與 足夠相似k_1,所以也許這無關緊要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505855.html
下一篇:MATLAB類串列資料結構
