موضوع: لینک کردن سیمولینک و ام فایل
-
2018/11/28, 23:30 #1
لینک کردن سیمولینک و ام فایل
با سلام وقت بخیر من یک ام فایل دارم. در اون چند متغییر مقدار دهی میشه برای ران سیمولینک رو هم میخوام اون چند متغییر رو در سیمولینک عدد دهی و سپس ران بشه. میشه راهنمایی کنید ؟
ویرایش توسط saeed : 2018/12/02 در ساعت 01:51
-
2021/05/08, 23:58 #2
سلام دوستان من یک کد ام فایل نوشتم که یک حلقه for داره و توی این حلقه for یک فایل سیمولینک run می شه و من یک معادله در کد ام فایل دارم که در اون یک سیگنال از سیمولینک به صورت آنلاین دریافت میشه و در نهایت خروجی محاسبه میشه مثلا y=az (این معادله دقیق نیست به طور مثال گفتم) که z از سیمولینک استخراج میشه به صورت انلاین و y میشه خروجی من .
حالا من می خوام راهی پیدا کنم که z که بردار 2 در 1 هست به صورت انلاین در هر گام واردد معادله بشه و در هر گام y حساب بشه و در نهایت من نمودار y رو داشته باشم.
در حالت عادی که کد رو نوشتم و با بلوک to workspace سیگنال z رو از سیمولینک دریافت کردم کد خطای زیر رو میده :
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number
of rows in the second matrix. To perform elementwise multiplication, use '.*'.
Error in test2im (line 24)
Y12=Fp*Z2;
که کد من به صورت زیر هست:
clc
clear
global Z2
for t=0:0.002:0.8
A=[0,0;0,1];
B=[1;1];C=[0,1];
nn=1;
Bp=inv(B'*B)*B' ;
Hp =5 ; % Prediction Horizon
if t==0
Z2=[0;100*pi];
end
Fp=zeros(Hp,2);
for i=1:Hp
Fp(i,=C*A^(i-1);
end
Y12=Fp*Z2;
y2=Y12(1);
sim RLMPC_F
end
figure(1) ;
plot(t ,y2(:,2) , 'LineWidth' , 2, 'r') ; hold on
xlabel('Time (second)') ;
ylabel('y2') ;
grid on
title('true') ;
حالا هم می خوام راجع به کد بهم پیشنهاد بدید هم راجع به تنظیمات بلوک to workspace .
پیشاپیش ممنونم. -
2021/05/09, 00:07 #3
سلام دوستان من یک کد ام فایل نوشتم که یک حلقه for داره و توی این حلقه for یک فایل سیمولینک run می شه و من یک معادله در کد ام فایل دارم که در اون یک سیگنال از سیمولینک به صورت آنلاین دریافت میشه و در نهایت خروجی محاسبه میشه مثلا y=az (این معادله دقیق نیست به طور مثال گفتم) که z از سیمولینک استخراج میشه به صورت انلاین و y میشه خروجی من .
حالا من می خوام راهی پیدا کنم که z که بردار 2 در 1 هست به صورت انلاین در هر گام واردد معادله بشه و در هر گام y حساب بشه و در نهایت من نمودار y رو داشته باشم.
در حالت عادی که کد رو نوشتم و با بلوک to workspace سیگنال z رو از سیمولینک دریافت کردم کد خطای زیر رو میده :
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number
of rows in the second matrix. To perform elementwise multiplication, use '.*'.
Error in test2im (line 24)
Y12=Fp*Z2;
که کد من به صورت زیر هست:
clc
clear
global Z2
for t=0:0.002:0.8
A=[0,0;0,1];
B=[1;1];C=[0,1];
nn=1;
Bp=inv(B'*B)*B' ;
Hp =5 ; % Prediction Horizon
if t==0
Z2=[0;100*pi];
end
Fp=zeros(Hp,2);
for i=1:Hp
Fp(i,: )=C*A^(i-1);
end
Y12=Fp*Z2;
y2=Y12(1);
sim RLMPC_F
end
figure(1) ;
plot(t ,y2(:,2) , 'LineWidth' , 2, 'r') ; hold on
xlabel('Time (second)') ;
ylabel('y2') ;
grid on
title('true') ;
حالا هم می خوام راجع به کد بهم پیشنهاد بدید هم راجع به تنظیمات بلوک to workspace .
پیشاپیش ممنونم.