関数findのエラーについて 【MATLAB function Simulinkブロック】
Show older comments
find関数の後にERRORが発生してしまいます
Simulinkの診断ビューワーには、以下のような表示がされていました。
MATLABのプログラム初心者なので配列の何が問題なのかよく分かりません。
インデックスが配列の次元を超えています。インデックス値 2 は配列 dd の有効範囲 [1 ~ 1] を超えています。
Error in 'test/MATLAB Function1'
dd(k,1) = Td(1,zz(1,1));
function [a,b,c,d] = fcn(u, g, ms, x2, T, d)
amx=g*ms;
xd = -50:0.5:0;
yy2 = 1:0.25:4;
ny2 =length(yy2);
for k=1:ny2
y2 = yy2(1,k);
y1=zeros(1,length(xd));
Td=zeros(1,length(xd));
Vr=zeros(1,length(xd));
Tr=zeros(1,length(xd));
for i=1:length(xd)
yd1(1,i) = -y2*xd(1,i)/(x2-xd(1,i))-d/2;
Td(1,i) = ((yd1(1,i))/100);
Vr(1,i) = amx * ((T^2+(-4*xd(1,i))/2));
Tr(1,i) = (-xd(1,i)/Vr(1,i));
end
zz = find(Td>Tr);
dd= zeros(length(k),1);
dr = zeros(length(k),1);
dxpd = zeros(length(k),1);
dypd = zeros(length(k),1);
dVr = zeros(length(k),1);
dy2 = zeros(length(k),1);
dd(k,1) = Td(1,zz(1,1)); %% ※ERROR が発生する箇所
dr(k,1) = Tr(1,zz(1,1)); %% ※ERROR が発生する箇所
dxpd(k,1) = xd(1,zz(1,1)); %% ※ERROR が発生する箇所
dypd(k,1) = yd1(1,zz(1,1)); %% ※ERROR が発生する箇所
dVr(k,1) = Vr(1,zz(1,1))*3; %% ※ERROR が発生する箇所
dy2(k,1) = y2-1/2;
%{
~~~~プログラム途中省略~~~~~~
%}
end
y = u;
Accepted Answer
More Answers (0)
Categories
Find more on 一般分野への適用 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!