2011-09-26 41 views
6

Tôi có vấn đề sau: Tôi muốn mô phỏng một số hệ thống kỹ thuật điều khiển. Vì nó khá phức tạp, tôi đã sử dụng máy tính để lấy được một số phương trình (phức tạp) chỉ có thể được xuất sang mã fortran77. Trên máy tính của tôi phát triển này không có vấn đề (máy linux).Làm thế nào để biên dịch các đối tượng fortran đơn bằng cách sử dụng dịch f2c?

Không, tôi muốn làm điều đó trong phần cứng và ở đây tôi phải sử dụng hệ điều hành windows. Thật không may matlab không hỗ trợ gfortran trên cửa sổ. Vì vậy tôi không thể biên dịch các tập tin fortran trên hộp đó.

Ý tưởng của tôi bây giờ là dịch sang C là trình biên dịch C có sẵn tại MATLAB trên chiến thắng. Bất kỳ tùy chọn nào khác (tốt hơn)?

Tôi có một số SUBROUTINES theo cách sau.

 SUBROUTINE sys_rhs (x, v, dx, param) 
     REAL*8 x(6) 
C  code is coming here 
     RETURN 
     END SUBROUTINE 

Có thực hành tốt và không cho nó hoạt động để sử dụng chức năng sys_rhs__ trong hàm giao diện viết bằng C? Vấn đề là, tôi không thể kiểm tra nó vì tôi không có quyền truy cập lớn vào máy tính Windows. Vì vậy, nó sẽ làm việc nếu tôi thử nó và tôi không cần phải thử nghiệm rất nhiều.

Ngoài ra tôi cần những gì trên cửa sổ? Tôi có thể lấy chúng ở đâu?

Cảm ơn Christian

+1

Dịch sang C thực sự có vẻ là tùy chọn tồi tệ nhất. Tùy thuộc vào phiên bản MATLAB của bạn, nó sẽ hỗ trợ * một số trình biên dịch fortran. Vì bất kỳ trình biên dịch fortran nào trong 10-15 năm qua sẽ biên dịch mã f77, chỉ cần tìm trình biên dịch khác - một trình biên dịch làm việc với MATLAB và sử dụng nó. Hoặc nếu bạn có một giấy phép MATLAB Linux, sử dụng intel's trên Linux - nó miễn phí trên Linux, nếu bộ nhớ phục vụ cho tôi. Ngoài ra, anh chàng này được cho là quản lý để có được gfortran/g95 + matlab để chơi tốt, vì vậy nó có thể. – Rook

+0

Như tôi đã viết: Trong Linux không có vấn đề gì cả. Tôi có thể biên dịch bằng cách sử dụng gfortran và mô phỏng.Nhưng phần cứng được kết nối với một máy giành chiến thắng ... Tại http://www.mathworks.de/support/compilers/R2010a/win32.html chỉ có trình biên dịch fortran intel propietary được đề cập (R2010a được cài đặt bởi người quản trị). –

+0

@ChristianWol: nó không phải là rất rõ ràng từ câu hỏi của bạn, bạn đang nói về việc tạo ra các tập tin MEX Fortran? – Amro

Trả lời

0

Câu trả lời khá đơn giản: Tôi đã có một số lỗi cú pháp trong mã fortran của mình. gfortran không kiểm tra cú pháp nghiêm ngặt như vậy và do đó giải thích mã fortran một cách chính xác. Sau khi loại bỏ lỗi chính tả, tôi đã mã hóa chuyển mã với f2c.

Cảm ơn

-1

có một giải pháp tốt hơn cho tất cả này

sử dụng máy Linux của bạn hoặc máy cửa sổ của bạn để thực hiện các chức năng trong c/C++ và sau đó tạo ra một tập tin dll.

Trong MATLAB bạn có thể tải DLL và thực hiện cuộc gọi đến các chức năng bên trong nó.

đây là hướng dẫn đơn giản cho thấy cách gọi dll bằng MATLAB.

http://www.mathworks.com/matlabcentral/fileexchange/15065-example-of-loading-c-dll-and-performance-comparison

+0

Chức năng được thực hiện trong fortran vì tôi chỉ có thể xuất sang fortran trong maxima (hệ thống đại số máy tính) như tôi biết. Làm thế nào để tạo một dll trên Linux? MinGW? –

+0

http://www.ibm.com/developerworks/linux/library/l-dll/index.html –

0

Intel bán một trình biên dịch khá tốt fortran (http://software.intel.com/en-us/articles/fortran-compilers/) mà họ sử dụng để cho đi miễn phí để thử nghiệm ... ;-)

PS Không, Im không liên quan đến công ty này bằng mọi cách!

+0

Xin lỗi, phần mềm propietary là không có cách nào bởi vì nó không phải là cho cá nhân tôi, nhưng đối với viện của tôi tại trường đại học. Họ không hài lòng với nó vì họ sẽ phải xử lý nó. –

+1

Vì vậy, nếu Mathlab có thể xử lý mã trong DLL (tôi ở đây vì vấn đề porting-totran-to-windows không cho Mathlab ;-)) tôi muốn đề xuất xem xét hướng đã được đề cập của việc tạo một DLL. Điều này sẽ làm việc bằng cách sử dụng g77 dưới MingGW hoặc Cygwin chạy trong Windows. – alk

0

Bạn có thể muốn kiểm tra các dự án gnumex, cho phép biên dịch MEX-file bằng cách sử dụng trình biên dịch bộ GNU GCC (bằng cách sử dụng MinGW hoặc Cygwin), với khả năng sử dụng G77 để biên dịch chương trình Fortran.

Các vấn đề liên quan