Soru sorMatlab S Function Bloğu Kod Çalışmıyor
serdargunay tarafından 4 yıl önce soruldu

Merhaba, Matlab function bloğuna kod yazarken resimde görülen hatayı alıyorum. Hatanın nerden kaynakladığını bulamadım. Yardımcı olur musunuz?

function [k, x]= fcn(u)
%#codegen
if (u<0.8)
while (u==1.2)
x = 1; %Buck
k = 0; %Buck
end
elseif (u>1.1)
while (u<0.7)
k = 1; %Boost
x = 0; %Boost
end
else
k = 0; %Buck
x = 1; %Buck
end

 

3 Cevap
Caglar Yönetici tarafından 4 yıl önce cevaplandı

Simulink kullanmıyorum ama, bazı durumlarda k'nın tanımsız olduğunu yazmış. Mesela if'in içindeki ilk while dongusu gercekten calısabilecek mi? u < 0.8 ve aynı zamanda while u == 1.2 olabilir mi? 

serdargunay tarafından 4 yıl önce cevaplandı

Caglar Bey cevabınız için teşekkür ederim. Evet dediğiniz gibi bir problemin olduğunu farkettim. Kodu oluşturamadım malesef. Döngüleri yapamıyorum. Yapılmasını istediğim işlemi anlatsam döngülerde yardımcı olur musunuz?

serdargunay tarafından 4 yıl önce cevaplandı

Aşağıdaki kodda yardımcı olur musunuz? 1. satır ve 3. satırdaki şartlara göre 2. ve 4. satırdaki işlemleri döngüye almak çalışıyorum. Ama tanımsızlık hatası veriyor. Yardımlarınızı bekliyorum.
u, 0.9 değerine eşitse,   
u 1.2 değerine gelene kadar x=1 olsun
u 1.2 değerine eşit büyükse veya 1.2 ile 0.9 arasındaysa
u 0.9'a eşit olana kadar y=1 olsun.
 
function [x,y] = fcn(u)
%#codegen
while (1)
if (u<=0.9) %Şarj
for u=1.2
x=1;
y=0;
end
elseif (u>=1.2) || (u>0.9) && (u<1.2) %Deşarj
for u=0.9
x=0;
y=1;
end
else
x=0;
y=0;
end
end
end