matlab轉換成c語言
Ⅰ 如何把matlab轉化成c語言
matlab 主要使用矩陣,變數是矩陣,運算是矩陣。即使是C語言中的一個簡單變數,matlab也要視它為矩陣。
C語言程序放入matlab使用:
(1)必須改寫main(){},把main(){},變成 matlab 入口函數 mexFunction(){},
(2)其它功能性函數/子程序不需變化。
(3)加頭文件 #include "mex.h"
你需要學習一下mexFunction(){} 如何書寫,參數意義等。這里就不費筆墨了。
入口函數樣子:
void mexFunction(int nlhs,mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
//一般變數聲明
//檢查輸入輸出參數
//為輸出參數創建矩陣,輸出指針指向它
//輸入指針輸出指針賦值
//調用功能性函數/子程序
}
編譯:
mex my_program.c
Ⅱ 請問有誰能把這個matlab系統轉化為c語言程序萬分感謝!
Simulink模型可以藉助於MATLAB產品家族的一些模塊將其直接轉換為C語言代碼,但不同版本的模塊名和調用方式有些差別。
早期的名稱叫Real-time Workshop(簡稱RTW),如下圖所示:
代碼生成還涉及到很多具體的設置,而所生成的代碼要進一步利用也需要花一些時間去掌握,這些都不是幾句話能說清楚的。樓主不妨自己先試試,遇到問題再問吧。
另一種思路是,把模型對應的微分方程寫出來,然後自己使用C語言直接編碼,但從演算法的可靠性等方面是不容易達到Simulink生成代碼的水平的。
Ⅲ 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代碼;
Ⅳ 怎樣把matlab程序轉化成C語言程序
可以用MATLAB的C++編譯器生成轉換m語言為C語言,首先得安裝編譯器,然後用下面語句來轉換mcc -m yourfile.m -c
Ⅳ matlab轉變c語言
嵌入式MATLAB可從MATLAB程序生成可嵌入C代碼
The MathWorks日前推出了嵌入式MATLAB――業界領先的MATLAB科學計算語言的子集。嵌入式MATLAB子集使MATLAB用戶能夠從MATLAB程序中生成高效、可嵌入C代碼,從而避免了常見的、耗時的和易出錯的用C代碼重寫MATLAB演算法的進程。
嵌入式MATLAB子集包括了眾多的MATLAB功能,有270多個MATLAB運算符和函數以及90多個定點工具箱(Fixed-Point Toolbox)函數。嵌入式MATLAB支持許多高級MATLAB語言功能,如多維陣列、實數和復數、結構、流程式控制制和下標運算。
轉換為C代碼由Real-Time Workshop 7執行,其是廣泛用於嵌入式代碼生成的MathWorks產品。Real-Time Workshop會自動產生嵌入式C,它在大小、性能和內存使用上可與手工編碼相媲美。用戶可以直接在MATLAB M文件中調用Real-Time Workshop,或者該文件也可以按名稱包括在Simulink模塊圖中。如果使用了Simulink,也可以使用Simulink HDL coder生成可合成的Verilog和VHDL。在這兩種情況下,在數字上,生成的代碼與嵌入式MATLAB源代碼相當。
早期使用客戶反饋,嵌入式MATLAB技術促進了迅速、准確的嵌入式軟體開發。GlucoLight公司的首席技術官Matt Schurman說:「通過在我們的設計流程中引入嵌入式MATLAB語言子集和Simulink,我們幾乎全部避免了以前從MATLAB到C的手工代碼轉換過程中遇到的錯誤。同時我們還縮短了後續產品開發的時間–從設計到實現」。
The MathWorks負責信號處理和通信產品線的市場總監Ken Karnofsky說:「MATLAB在演算法開發方面一直為許多電子工程師們所選擇,而嵌入式MATLAB提供他們更想要的功能–讓他們在嵌入式系統中進行演算法開發、設計和實現時一直使用MATLAB」。
可用性
在以下最新版本的MathWorks產品中支持嵌入式MATLAB技術:MATLAB、Simulink、Fixed-Point Toolbox、Stateflow、SimEvents和Simulink HDL Coder。Simulink和Real-Time Workshop是必需的產品。有關嵌入式MATLAB的詳情,請訪問www.mathworks.com/procts/featured/embeddedmatlab。
Ⅵ MATLAB程序如何轉成C語言
可以將程序寫到embedded
function放到simulink裡面利用RTW
workshop就可以生成了
裡面可以有矩陣運算matlab基本的函數等,功能還是很豐富的,可以到網上查找相關資料
Ⅶ 如何將matlab語言轉換為c語言
方法如下:
1)matlab要把n++寫成n=n+1
2)printf在matlab中相近功能的命令有disp(),!echo,和sprintf(),其中最後一種最接近c中的printf。有關具體用法,你可以在matlab主命令窗口輸入:help sprintf 來查閱這個命令的幫助和例子。比如:sprintf('The array is %dx%d.',2,3),其輸出是 The array is 2x3
3)頭文件的include是不用的,因為matlab的常用庫里是包含了這些函數的。順帶一提,matlab里對函數的定義,開頭要用function XXX。