:bye: ++هل بالامكان ان اغير كود مكتوب بالماتلاب الى كود مكتوب بلغة السي :hmm:
كيفية التحويل من الماتلاب الى لغة C++
السلام عليكم و رحمة الله و بركاته
قمت بعملية التحويل هذه قبل حوالي 3 سنوات و على ما أذكر هناك مترجم mcc
و يستعمل ب الكيفية التالية
>> mcc yourMatlabmethod.m
و لا أنصحك بذلك لأنه تحويل كود صغير في المطلاب يقابله العديد من الملفات سي, دي ال ال ...
garo كتب:noooooooooooooooooooooooooooooooooooooooooo
:hmm:
فعلا هي دالة MCC اختصار Matlab to C/+C او Matlab Compiler C
هذا الرابط بة شرح للدالة مع بارامترز بتاعتها ولكن العيب كما قال الاخ بن عيد ان حجم كود (مشروع) ال C الناتج سيكون كبيرررررر.
http://www.codeproject.com/KB/cpp/mexFunction.aspx
إذا كانت لغة السي لغة عالية المستوى فلغة الماتلاب لغة فائقة المستوى لأنها تبعد عنك الكثير من التفاصيل وتشعر معها كأنك تتعامل مع الرياضيات بالورقة والقلم فلست بحاجة لتعريف مصفوفة ولست بحاجة لكتابة حلقات متداخلة لضرب مصفوفتين لكن إذا كنت تريد التحويل فعليك إذا أن تعرف كل شئ وتقوم بانشاء دوال لكل عملية تريد القيام بها وطبعا الأمر سيكون أكثر تعقيدا إذا كان الكود الذي تريد تحويله متعلق بمعالجة الإشارات الرقمية
من أقوال الأئمة
الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".
الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".
الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".
الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".
علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".
وكل خير في اتباع من سلف وكل شر في ابتداع من خلف
شكرا للاخوة الزملاء وانا
بالفعل احتاجه في معالجة الاشارة الرقمية ممكن تساعدوني
اقتباسبالفعل احتاجه في معالجة الاشارة الرقمية ممكن تساعدوني
كنت متوقع ذلك
على العموم هناك مكتبات للتعامل مع المصفوفات ومعالجة الصور وغير ذلك بالسي بلس بلس منها مكتبة انتل
انظر هذا الرابط ربما يفيدك
http://www.intel.com/cd/software/products/.../eng/302910.htm
من أقوال الأئمة
الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".
الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".
الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".
الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".
علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".
وكل خير في اتباع من سلف وكل شر في ابتداع من خلف
اريد تحويل هذا الكود from c++ to matlab code
public void Hide(Stream messageStream, Stream keyStream){
byte[] waveBuffer = new byte;
byte message, bit, waveByte;
int messageBuffer; //receives the next byte of the message or -1
int keyByte; //distance of the next carrier sample
//loop over the message, hide each byte
while( (messageBuffer=messageStream.ReadByte()) >= 0 ){
//read one byte of the message stream
message = (byte)messageBuffer;
//for each bit in [message]
for(int bitIndex=0; bitIndex<8; bitIndex++){
//read a byte from the key
keyByte = GetKeyValue(keyStream);
//skip a couple of samples
for(int n=0; n<keyByte-1; n++){
//copy one sample from the clean stream to the carrier stream
sourceStream.Copy(
waveBuffer, 0,
waveBuffer.Length, destinationStream);
}
//read one sample from the wave stream
sourceStream.Read(waveBuffer, 0, waveBuffer.Length);
waveByte = waveBuffer;
//get the next bit from the current message byte...
bit = (byte)(((message & (byte)(1 << bitIndex)) > 0) ? 1 : 0);
//...place it in the last bit of the sample
if((bit == 1) && ((waveByte % 2) == 0)){
waveByte += 1;
}else if((bit == 0) && ((waveByte % 2) == 1)){
waveByte -= 1;
}
waveBuffer = waveByte;
//write the result to destinationStream
destinationStream.Write(waveBuffer, 0, bytesPerSample);
}
}
//copy the rest of the wave without changes
//...
}
--------------------------------------
Extracting the Message
public void Extract(Stream messageStream, Stream keyStream){
byte[] waveBuffer = new byte;
byte message, bit, waveByte;
int messageLength = 0; //expected length of the message
int keyByte; //distance of the next carrier sample
while( (messageLength==0 || messageStream.Length<messageLength) ){
//clear the message-byte
message = 0;
//for each bit in [message]
for(int bitIndex=0; bitIndex<8; bitIndex++){
//read a byte from the key
keyByte = GetKeyValue(keyStream);
//skip a couple of samples
for(int n=0; n<keyByte; n++){
//read one sample from the wave stream
sourceStream.Read(waveBuffer, 0, waveBuffer.Length);
}
waveByte = waveBuffer;
//get the last bit of the sample...
bit = (byte)(((waveByte % 2) == 0) ? 0 : 1);
//...write it into the message-byte
message += (byte)(bit << bitIndex);
}
//add the re-constructed byte to the message
messageStream.WriteByte(message);
if(messageLength==0 && messageStream.Length==4){
//first 4 bytes contain the message's length
//...
}
}
}
