Persistent Variable will not update in a function call
9 次查看(过去 30 天)
显示 更早的评论
I have a sub-function of an EML Simulink Block that has a persistent variable, wm_last, declared. The variable is not used anywhere other than within this function call. I keep getting an error when I try to update this variable. When he line, "wm_last = wm" is uncommented, my model will not build. What gives?
function corr = LeverArmCorrection(m_deltaTime, deltaThetaMountingFrame, ...
earthRateMountingFrame)
persistent wm_last
if isempty(wm_last)
wm_last = zeros(1,3);
end
m_TableLeverArm = [0.00524; 0.4416; 1.2755];
%mounting to ENA frame rate (rad/sec)
wm = (deltaThetaMountingFrame / m_deltaTime) - earthRateMountingFrame;
%mounting to ENA frame angular acceleration (rad/sec^2)
am = (wm - wm_last) ./ m_deltaTime;
% wm_last = wm;
%mounting frame sensed acceleration sensitivity to lever arm
XM = zeros(3,3); % mounting frame sensed accel sensitivity to lever arm (ft/sec^2/ft)
XM(1, 1) = -wm(2).^2 - wm(3).^2;
XM(2, 2) = -wm(1).^2 - wm(3).^2;
XM(3, 3) = -wm(1).^2 - wm(2).^2;
XM(1, 2) = wm(1) * wm(2) - am(3);
XM(1, 3) = wm(1) * wm(3) + am(2);
XM(2, 1) = wm(2) * wm(1) + am(3);
XM(2, 3) = wm(2) * wm(3) - am(1);
XM(3, 1) = wm(3) * wm(1) - am(2);
XM(3, 2) = wm(3) * wm(2) + am(1);
%lever arm correction (ft/sec^2)
XRM = (XM * m_TableLeverArm)';
corr = XRM .* m_deltaTime;
end
回答(1 个)
Image Analyst
2015-5-8
Try making it global instead of persistent. It should work then.
4 个评论
Stephen23
2015-5-12
@Alyssa: can you please give us the complete error message, which includes all of the red text.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 General Applications 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!