[問題] Embedded MATLAB中使用可變大小的矩陣?已回收

看板MATLAB作者 (心屏氣和)時間15年前 (2010/06/28 02:18), 編輯推噓2(2016)
留言18則, 3人參與, 最新討論串1/1
由於我有個副程式需要根據input來改變 output的矩陣大小, 例如: function y=struct_example(u) %#eml data = ones(1,1); if u ==1 data = ones(1,1); else data = ones(1,2); end y = data; MATLAB會出現的錯誤訊息如下 Data 'y' (#45) is inferred as a variable size matrix, while its specified type is something else. 上網查過有 eml.varsize的指令 但是測試了很久還是不能用= =" 不知道MATLAB有無其它方法可以實現可變大小的矩陣輸出 或是可以提供我關鍵字呢 感謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.33.201

06/28 02:33, , 1F
輸出大小本來就沒有限制的啊... 看不懂你的問題 = =
06/28 02:33, 1F

06/28 03:27, , 2F
抱歉可能沒敘述好~若將我的副程式 放在embedded matlab中
06/28 03:27, 2F

06/28 03:28, , 3F
就會出錯~原因是無法支援矩陣的大小/尺寸是可變的
06/28 03:28, 3F

06/28 03:29, , 4F
副程式中 y 有可能是1x1 或是 1x2的矩陣 這樣就會出錯~"~
06/28 03:29, 4F

06/28 05:45, , 5F
你 MATLAB 是用什麼版本? Variable-size 是 2009b 開始
06/28 05:45, 5F

06/28 05:45, , 6F
才支援的新功能。
06/28 05:45, 6F

06/28 10:03, , 7F
我用2010a~@@
06/28 10:03, 7F

06/28 14:58, , 8F
那你所謂的不能用是怎麼個不能用法?
06/28 14:58, 8F

06/28 19:35, , 9F
我測試過你的例子並沒有遇到你提出的問題
06/28 19:35, 9F

06/28 19:36, , 10F
是否你使用函數的方式錯誤? 或是問題出在主程式上
06/28 19:36, 10F

06/28 19:42, , 11F
喔~抱歉沒看到推文~使用在simulink中我再測測看
06/28 19:42, 11F

06/28 19:57, , 12F
的確會出現你提出的錯誤訊息,目前有個想法來解決但需要你自
06/28 19:57, 12F

06/28 19:59, , 13F
己研究看看,我對simulink不熟。想法用兩個自定函數方塊
06/28 19:59, 13F

06/28 20:00, , 14F
然後利用switch等工具來決定選擇通過哪個哪一個函數
06/28 20:00, 14F

06/28 20:04, , 15F
或是設計讓y的輸出向量大小一致,不需要的地方看能不能塞0
06/28 20:04, 15F

06/28 20:05, , 16F
然後後面再去除
06/28 20:05, 16F

06/28 23:31, , 17F
又想到一個方法 就是做兩個輸出 y1 y2 需要y2時讓y1是0陣列
06/28 23:31, 17F

06/28 23:32, , 18F
反之亦然,這樣y1 y2的輸出都能保持陣列大小不變
06/28 23:32, 18F
文章代碼(AID): #1C9vOJsF (MATLAB)