Kỹ thuật sử dụng Matlab/LabView trong nghiên cứu và tính toán

Discussion in 'Computer science & Electrical Engineering' started by thelast, Jun 4, 2008.

  1. jah

    jah Thèm thuồng

    Cách chuẩn đoán bệnh lập trình C trên matlab

    Đọc lại chủ đề C-Matlab, có một cái lỗi mà Jah hay bị là viết loop theo kiểu của C cho code trên matlab --> tốc độ chậm. Và một cách phát hiện ra nó là dùng hàm thống kê xử lý "profile":
    ---------
    profile on;

    funcABC;
    ...
    funcXYZ

    profile off;
    profile viewer;
    ----------
    Có bác nào có kinh nhiệm về cách tối ưu code tren matlab thì chia sẻ thêm :)
    Cuối tuần vui vẻ!
     
  2. HaiAu

    HaiAu Thèm thuồng

    Theo tôi thì nên viết thành dạng ma trận. MATLAB = MATrix LABoratory nên xử lý ma trận cực nhanh.

    HA
     
  3. superman

    superman Thèm thuồng

    Minh rat thich ham sparse() dung de luu ma matrix co lon o Matlab.
    Ham getframe() dung de tao file movie (duoi avi) cung rat thu vi (dac biet la mo phong mot qua trinh co hoc) .
    Nice day:-w
     
  4. levent

    levent Thèm thuồng

    Nếu không muốn đặt lệnh trong m-file thì profiler cũng có thể chạy từ menu Tools -> Open profiler, như video hướng dẫn của Doug Hull:

    Speeding up Dougs solution with the profiler | Doug's MATLAB Video Tutorials

    Mình chưa dùng profiler, chỉ dừng ở mức xem các warning trong m-file để sửa tăng tốc một chút (trong cửa sổ m-file Editor, có một cột ngoài cùng bên phải thường hiện ra những vạch màu cam, nó thường chỉ những lỗi cú pháp hoặc những điểm có thể sửa chút ít để chương trình chạy nhanh hơn).
     
    dinhcongbang likes this.
  5. BvvB

    BvvB Thèm thuồng

    Em đang muốn tạo một vùng trên ảnh mà bên trong bên ngoài rỗng rỗng (transparent) bằng matlab (để đặt chồng lên 1 cái ảnh khác, center của hình tròn cũng là center của bức ảnh khác đó). Như hình dưới đây:

    [​IMG]

    Các bác có suggest gì không ạ? Thực ra vùng em muốn che đi là vùng có hình dạng như hình bình hành, nhưng mà em chưa hình dung ra cách nào cả nên nghĩ thử hình tròn xem thế nào.

    Em cảm ơn!

     
  6. BvvB

    BvvB Thèm thuồng

    Em đã giải quyết được hình tròn rồi:
    ho góc alpha chạy từ -pi -> pi. Bán kính r fix. Dùng phương trình đường tròn:
    X = x0 + r * cos(alpha);
    Y = y0 + r * sin(alpha);
    (x0, y0) là center.

    Vướng nhất là chỗ này:
    oldimage(sub2ind([m n] ,X,Y)) = value;

    Em thử extend nó sang hình ellipse nhưng vẫn chưa được.
    [​IMG]
    [​IMG]
    -------------------------------------
    Em làm được rồi, quên mất là nó có pt đơn giản hơn:
    [​IMG]
    [​IMG]
    Giờ cần phải rotate nó nữa.
     
  7. dlhien

    dlhien black, white, and red

    Problem with Matlab (phiên bản 2009b)

    Mình đang dùng Matlab R2009b, gặp phải 1 lỗi mà ko biết làm thế nào fix cả
    Chả là sau mỗi lần run code (time khoảng 6 hours), tự nhiên Matlab ko hề nhận lệnh nào. Mình vẫn có thể type command được, nhưng ko dùng đc phím backspace và enter. Sau khi khởi động lại Matlab thì nhận được dòng báo lỗi "The desktop configuration was not saved successfully". Mình cũng goodled nhưng những solutions của họ ko work :(
    Problem solved khi mình phải khởi động lại máy.
    Không biết mọi người có ai từng gặp problem này ko? Có cách nào fix nó mà ko cần khởi động lại máy ko ạ?
    Cảm ơn mọi người nhiều :rose:
     
  8. thanhsong85

    thanhsong85 Viên mãn

    Chào bạn,

    Không biết bạn xài MS hay Linux.

    Mình xài Ubuntu cũng gặp phải lỗi : "The desktop configuration was not saved successfully" như bạn vậy. Sau đó mình thử chuyển sang mode root thì nó không hiện lỗi nữa, mình nghĩ có thể là tài khoản của bạn đang dùng không cho phép ghi file vào thư mục permitted. Bạn thử chuyển sang tk admin xem.
     
  9. vuhung

    vuhung PhDって何?

    Các bác cho em hỏi làm thế nào để export file .eps đẹp trong matlab với ạ. Em dùng lệnh print -depsc2 output.eps" tuy nhiên chất lượng file .eps khi save ra rất xấu so với hình trước khi save. Có bác nào biết phương pháp giải quyết giúp em với ạ. Em cám ơn nhiều.
    [​IMG]


    [​IMG]
     

    Attached Files:

  10. meoxanh0do

    meoxanh0do Thèm thuồng

    Quote: dlhien
    Mình đang dùng Matlab R2009b, gặp phải 1 lỗi mà ko biết làm thế nào fix cả
    Chả là sau mỗi lần run code (time khoảng 6 hours), tự nhiên Matlab ko hề nhận lệnh nào. Mình vẫn có thể type command được, nhưng ko dùng đc phím backspace và enter. Sau khi khởi động lại Matlab thì nhận được dòng báo lỗi "The desktop configuration was not saved successfully". Mình cũng goodled nhưng những solutions của họ ko work
    Problem solved khi mình phải khởi động lại máy.
    Không biết mọi người có ai từng gặp problem này ko? Có cách nào fix nó mà ko cần khởi động lại máy ko ạ?
    Cảm ơn mọi người nhiều

    Đúng như bạn thanhsong85 đề cập có thể do Matlab mình sài là phiên bản không chính thức nên nó cầm ghi vào những thư mục permited hoặc cũng có thể do đó là 1 dạng file Matlab không hỗ trợ. Bạn có thể nhấn tổ hợp phím Ctrl+C , tắt Matlab và mở lại sẽ không còn lỗi nữa.
    Thân!
     
  11. robocon

    robocon Nghiện

    Chào các anh chị. Không biết các anh chị đã dùng matlab cho các vấn đề điều khiển chưa. Em có vấn đề này cần trợ giúp.
    Em sử dụng cái function "Embedded matlab Function"
    [​IMG]
    Nó nằm trong mục Simulink/User-Defined Function ấy.
    Em dùng nó để lập trình mà sao cái tín hiệu ra kỳ quá. Em đã set sample time cho nó rồi mà vẫn không được.
    Lúc em lập trình bằng VHDL thì tín hiệu nó ra như hình số 1. Còn dùng cái Embedded matlab Function thì nó lại ra cái hình số 3 (hình số 2 là cái tín hiệu cung cấp ở đầu vào).
    [​IMG]
    Cái đoạn code trong khối Embedded matlab Function chỉ là phép biến đổi Clark và Park đơn giản mà thôi.
    Code:
    function [Id,Iq, u_out,v_out,w_out,theta_out] = fcn(u,v,w, theta)
    theta1=theta*2*pi/360;
    Ialfa = 2/3*u - 1/3*v - 1/3*w;
    Ibeta = v/sqrt(3) - w/sqrt(3);
    Id1 = Ialfa*cos(theta1) + Ibeta*sin(theta1);
    Iq1 = (-Ialfa)*sin(theta1) + Ibeta*cos(theta1);
    Id = Id1;
    Iq = Iq1;
    u_out = u;
    v_out = v;
    w_out = w;
    theta_out = theta;
    
    Em sử dụng cái hàm "Embedded matlab Function" này có đúng không hay là phải sử dụng hàm khác. Xin chân thành cảm ơn các anh chị và các bạn
     
  12. vuongtv-ac

    vuongtv-ac Thèm thuồng

    Mình tưởng tn chứ nhỉ
    Ialfa = u;
    Ibeta = 1/sqrt(3)*(u+2v);
    Sr nếu hiểu nhầm doạn code nhé.
     
  13. robocon

    robocon Nghiện

    Công thức của nó đây bác ạh.
    [​IMG]
     
    vuongtv-ac and (deleted member) like this.
  14. TBD

    TBD ...

    Mình hỏi hơi ngố một chút, mình chưa quen với Matlab.

    Trong Matlab có kỹ thuật nào để nhận diện hàm hay không? Có n điểm có thể đưa ra hàm xấp xỉ cho chúng. Sử dụng hồi quy bậc 1,2.. thì không nói làm gì nhưng dạng hàm có thể là logarit hoặc hàm mũ chẳng hạn.
     
  15. 0712042

    0712042 Thèm thuồng

    dùng Gaussian Process có thể xấp xỉ được n điểm theo ý bạn. có code matlab sẵn, nhưng mà để học kĩ thuật này thì hơi mất thời gian.
     
    TBD likes this.
  16. hanamichi

    hanamichi Thèm thuồng

    Bạn thử dùng hàm trong ví dụ này xem:
    http://www.mathworks.com/help/stats/examples/weighted-nonlinear-regression.html
     
    TBD likes this.
  17. TBD

    TBD ...

    Kỹ thuật này mình thấy dễ hiểu dễ sử dụng.

    Mình có đọc lại một số phương pháp hồi quy. Với Gaussian Process thì hơi mất thời gian tìm hiểu thật, nhưng đọc thì thấy kỹ thuật này được sử dụng nhiều, ví dụ trong Data Mining.
     
    0712042 likes this.
  18. TBD

    TBD ...

    Dạo đó mình không biết chứ dùng phương pháp tổng bình phương sai số nhỏ nhất cũng xấp xỉ được. Công cụ có thể dùng Curve Fitting của Matlab, Origin, thậm chí Excel. Các hàm fit của Matlab dựa trên phương pháp đó.
    Ngoài ra có thể sử dụng Neural Network, Gaussian Process như bạn gì nói.
     
    Last edited: Mar 1, 2013
    0712042 likes this.

Share This Page