我需要一個想法如何使s功能作爲總線選擇器。我有一個結構作爲s函數的輸入。這個結構有283個元素(未來可能會更多),並且正在作爲公共汽車提供。我想要S函數輸出結構的各個元素(並因此像總線選擇器一樣)。 Ofcourse我可以手動打字很容易做到這一點:s功能作爲總線選擇器
y0[0]=u0->arguemtn;
y0[0]=u0->speedx; % and so on till 283
但後來我需要知道所有的結構元素的名稱,還需要手動輸入。有沒有一種方法,我只需要使用一個簡單的for循環,並將各個元素輸入分配給s函數的輸出。
你可以給我暗示,因爲我只是在這裏
UPDATE
卡住建議答案我試着寫這樣的事情後。
int number_of_elements,i;
char field_name;
number_of_elements= mxGetNumberOfFields(u0[0]);
for(i=0;i<number_of_elements;i++)
{
field_name=mxGetFieldNameByNumber(u0[0], i);
yi[0]=u0->field_name;
}
但首先我該如何讓y1 y2 y3等等作爲循環的一部分。因爲它是一個完全不同的變量,所以我不能寫yi。我也寫過這部分我寫在s函數生成器的代碼描述部分,我認爲這是錯誤的。任何人都可以建議我該怎麼做。
另一個重要的問題是我發送的結構數據類型不同(如uint8,uint16,single),因此我也需要確定輸入數據類型。這怎麼可能,以及我可以如何設置這個數據類型到我的輸出循環?
我對此有疑問。因爲我不知道在我的結構中的字段數量,因此我不知道在我的s函數生成器塊中的輸出數量,我如何使這種動態? – 2015-03-05 14:54:32
在S函數初始化中,您使用適當的API函數來詢問結構(輸入爲參數)以確定字段數量,然後使用其他適當的API函數來設置輸出數量(以及其他屬性)。 – 2015-03-05 15:00:49
嘿我更新了我的問題。當我正在瀏覽s函數文檔時,我發現了這一點。 S函數的侷限性是它不支持總線信號http://de.mathworks.com/help/simulink/sfg/s-function-limitations.html所以任何想法如何解決這個問題? – 2015-03-06 07:45:21