Matlab 在如何對事物進行編號/索引方面存在局限性:
- 陣列和元胞陣列需要自然數的索引(不鼓勵且不通用的例外情況)。
- 結構體陣列的欄位名只能是以字母開頭后跟字母/數字/下劃線的字串。
但是,使用零或負數或非整數對某些事物進行編號可能是常見/適當/直觀的。
例如,存盤越來越多的所謂球諧函式需要越來越多的負“索引”。
縮放和移動這些“索引”以使其成為自然數,即有效的(單元格)陣列索引,具有缺點(較小的負索引或更精細的非整數索引可能稍后出現,需要重新計算縮放或移位引數并進行調整整個資料結構;理解生成的資料結構需要知道比例和移位引數,并且在查看資料時需要“心算”)。
有沒有沒有這些缺點的方法?
uj5u.com熱心網友回復:
containers.Map可能會達到你想要的。顯然它可以將任何物件存盤為值。這似乎是無證的。
uj5u.com熱心網友回復:
數字可以轉換為結構陣列的有效欄位名稱,例如使用此函式:
% Field names of Matlab structures:
% - can't start with a digit, so we prepend 'number_',
% - can't contain '-', so we replace it by 'minus',
% - can't contain ' ', so we replace it by 'plus' (for numbers such as -1e 20),
% - can't contain '.', so we replace it by 'point'.
% For example, the number -0.5 turns into the string 'number_minus0point5'.
num2fieldname = @(x)(['number_' replace(replace(replace(num2str(x),'-','minus'),'.','point'),' ','plus')]);
例如,num2fieldname(-1.5e 20)產量'number_minus1point5eplus20'。
要將它們用作欄位名稱,例如使用“索引”(2,-1):
mystructure.(num2fieldname(2)).(num2fieldname(-1)) = myobject
如果四舍五入num2str更改設定將不起作用。
uj5u.com熱心網友回復:
在最新版本的 MATLAB 中,table資料型別允許任意文本作為變數名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407250.html
標籤:
上一篇:api客戶端中的nonce是什么
