2012-10-20 97 views
3

我正在研究Simulink中的遊艇速度預測程序(VPP)(顯然,我無法上傳圖像,因爲我是該用戶的新用戶)。信號的初始值Simulink

解決這個問題需要我知道風速和角度(分別爲VA和β),以獲得由帆產生的力,從而獲得船的淨力,加速度和最終速度。然而,VA取決於船速(VS)。我試圖通過積分器塊來加速後者的初始值,該積分器塊將加速度轉換爲速度,但我一直在「視風」m函數內部收到以下錯誤:「索引表達超出範圍,試圖訪問元素3。有效範圍是1-1。「。請注意,如果我重新排列模型並以恆定值輸入函數,比方說,它將起作用(儘管由此產生的船隻速度在物理上是不正確的)。下面顯示了m函數的列表。

簡化框圖:

[VT,γ] - >視風 - >空氣動力學&流體力學 - >力/質量 - >加速度 - > 1/S - > VS

function [VA, beta] = fcn(inputs) 
% 1 - gamma % true wind heading [deg] 
% 2 - VT % true wind speed [kts] 
% 3 - VS 

%#codegen 

% apparent wind angle [deg] 
beta=atan(sin(inputs(1)*pi/180)/(cos(inputs(1)*pi/180)+inputs(3)/inputs(2)))/pi*180;  

% apparent wind speed [kts] 
VA=sin(inputs(1)*pi/180)/sin(beta*pi/180)*inputs(2);  

end 

編輯:請找到現在我可以實際上傳一個模型所附的流程圖。

enter image description here

+0

這些公式看起來很簡單,以至於嵌入式matlab功能塊已經過時了。使用simulink數學運算模塊來實現beta和VA的公式似乎更合適。 – grungetta

+0

我已經完成了這個工作。但是我仍然想知道我在做什麼錯誤,不要在將來重複:) – Artur

+1

在你的MATLAB函數中,變量'VS'來自哪裏(用於方程式beta = atan(sin(inputs (1)* pi/180)/(cos(輸入(1)* pi/180)+ VS /輸入(2)))/ pi * 180; – grungetta

回答