matlab轉c語言
A. 如何把MATLAB的M文件轉換成c語言
MATLAB自帶生成C語言的功能,只需要在編輯器功能區選擇「應用程序」,找到 MATLAB Coder,打開,按照步驟操作即可,如圖所示。
但是它可能有諸多限制,有些內置函數無法生成C語言,所以如果遇到這種情況你可能需要用 C自己實現一些功能。
B. matlab語言 轉成 c語言
function tiao_shu_feng_shan()
clear
speed = 100;
t = 0;
Y_a = 4;Y_b = 4;Y_c = 4;
y0 = figure('menubar','none');
axis equal;axis off
axis([-6 6 -10 6])
title('調速電風扇','fontsize',15);
grid off;
[x1,y1,z1]=sphere(30); %產生球體坐標
x=5*x1;y=5*y1;z=5*z1;
shading interp;
hold on;
mesh(x,y,z),colormap(hot); %畫風扇框架
hold on;
hidden off;
hold on;
fill([-3,-1,1,3],[-8.5,-5,-5,-8.5],[0.5,0.5,0.5]); %畫一個多邊形
text(-1.7,-7.5,'星夜回緣 ','color','k','fontsize',15); %多邊形里的文字
hold on
ax = Y_a * cos(2 * pi * t);ay = Y_a * sin(2 * pi * t); %計算初始三個葉片的橫坐標和縱坐標
bx = Y_b * cos(2 * pi * t - 2 * pi/3);by = Y_b * sin(2 * pi * t - 2 * pi/3);
cx = Y_c * cos(2 * pi * t + 2 * pi/3);cy = Y_c * sin(2 * pi * t + 2 * pi/3);
y_line_a = line([0 ax],[0 ay],'EraseMode','xor','Color','r','linestyle','-','linewidth',20); %畫出三個葉片
y_line_b = line([0 bx],[0 by],'EraseMode','xor','Color','b','linestyle','-','linewidth',20);
y_line_c = line([0 cx],[0 cy],'EraseMode','xor','Color','g','linestyle','-','linewidth',20);
k=1;
%b1為停止按鈕
b1=uicontrol('parent',y0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','停止',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[280 10 50 20],...
'callback','k=0;');
%b2為關閉按鈕
b2=uicontrol('parent',y0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','關閉',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[350 10 50 20],...
'callback',[...
'k=1;,',...
'close']);
%s1為調速框條
s1=uicontrol('parent',y0,...
'units','points',...
'tag','s1',...
'style','slider',...
'value',1*speed,...
'max',100,...
'min',30,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 10 190 20],...
'callback',[...
'm=get(gcbo,''value'');,',...
'speed = m/1;']);
%t1為上面的文字說明
% t1=uicontrol('parent',y0,...
% 'units','points',...
% 'tag','t',...
% 'style','text',...
% 'fontsize',15,...
% 'string','風速 請點擊滑動條空白處',...
% 'backgroundcolor',[0.75 0.75 0.75],...
% 'position',[30 30 190 20]);
while 1 %讓風扇轉起來的循環
if k==0
break
end
t = t + 1/speed;
ax = Y_a * cos(2 * pi * t);ay = Y_a * sin(2 * pi * t);
bx = Y_b * cos(2 * pi * t - 2 * pi/3);by = Y_b * sin(2 * pi * t - 2 * pi/3);
cx = Y_c * cos(2 * pi * t + 2 * pi/3);cy = Y_c * sin(2 * pi * t + 2 * pi/3);
drawnow;
set(y_line_a,'XData',[0 ax],'YData',[0 ay]);
set(y_line_b,'XData',[0 bx],'YData',[0 by]);
set(y_line_c,'XData',[0 cx],'YData',[0 cy]);
end
然後使用MATLAB的Deployment Tool轉換成c代碼;
C. 請問有誰能把這個matlab系統轉化為c語言程序萬分感謝!
Simulink模型可以藉助於MATLAB產品家族的一些模塊將其直接轉換為C語言代碼,但不同版本的模塊名和調用方式有些差別。
早期的名稱叫Real-time Workshop(簡稱RTW),如下圖所示:
代碼生成還涉及到很多具體的設置,而所生成的代碼要進一步利用也需要花一些時間去掌握,這些都不是幾句話能說清楚的。樓主不妨自己先試試,遇到問題再問吧。
另一種思路是,把模型對應的微分方程寫出來,然後自己使用C語言直接編碼,但從演算法的可靠性等方面是不容易達到Simulink生成代碼的水平的。