Bạn có thể gặp phải thông báo lỗi sau hoặc thông báo tương tự khi làm việc với các hàm hoặc biến trong MATLAB®
Undefined function or variable 'x'.
Các lỗi này thường chỉ ra rằng MATLAB không thể tìm thấy một biến cụ thể hoặc tệp chương trình MATLAB trong thư mục hiện tại hoặc trên đường dẫn tìm kiếm
Phương pháp khả thi
Xác minh chính tả của hàm hoặc tên biến
Một trong những nguyên nhân phổ biến nhất là viết sai chính tả hàm hoặc tên biến. Đặc biệt với những tên dài hơn hoặc những tên có chứa các ký tự gần giống nhau [như chữ l
và chữ số một] thì rất dễ nhầm và khó phát hiện.
Thông thường, khi bạn đánh vần sai một hàm MATLAB, tên hàm gợi ý sẽ xuất hiện trong Cửa sổ Lệnh. Ví dụ: lệnh này không thành công vì nó bao gồm một chữ cái viết hoa trong tên hàm
Undefined function or variable 'accumArray'. Did you mean: >> accumarray
Khi điều này xảy ra, hãy nhấn Enter để thực hiện lệnh được đề xuất hoặc Esc để loại bỏ nó
Xác minh đầu vào tương ứng với cú pháp chức năng
Các phương thức đối tượng thường được gọi bằng cú pháp hàm. chẳng hạn
Undefined function or variable 'accumArray'. Did you mean: >> accumarray0. Ngoài ra, chúng có thể được gọi bằng ký hiệu dấu chấm. ví dụ
Undefined function or variable 'accumArray'. Did you mean: >> accumarray1. Một lỗi phổ biến là trộn lẫn các cú pháp này. Chẳng hạn, bạn có thể gọi phương thức bằng cú pháp hàm, nhưng để cung cấp đầu vào theo cú pháp ký hiệu dấu chấm và loại bỏ đối tượng làm đầu vào. chẳng hạn,
Undefined function or variable 'accumArray'. Did you mean: >> accumarray2. Để tránh điều này, khi gọi một phương thức đối tượng, hãy đảm bảo bạn chỉ định đối tượng trước, thông qua đầu vào đầu tiên của cú pháp hàm hoặc thông qua mã định danh đầu tiên của ký hiệu dấu chấm
Đảm bảo tên hàm khớp với tên tệp
Khi bạn viết một hàm, bạn thiết lập tên của nó khi bạn viết dòng định nghĩa hàm của nó. Tên này phải luôn khớp với tên của tệp bạn lưu vào. Ví dụ: nếu bạn tạo một hàm có tên là
Undefined function or variable 'accumArray'. Did you mean: >> accumarray3,
function curveplot[xVal, yVal] - program code -
thì bạn nên đặt tên cho tệp chứa chức năng đó là
Undefined function or variable 'accumArray'. Did you mean: >> accumarray4. Nếu bạn tạo tệp
Undefined function or variable 'accumArray'. Did you mean: >> accumarray0 cho hàm, hãy đặt tên cho tệp đó là
Undefined function or variable 'accumArray'. Did you mean: >> accumarray1. Trong trường hợp tên tệp và hàm xung đột, tên tệp sẽ ghi đè tên được đặt cho hàm. Trong ví dụ này, nếu bạn lưu hàm
Undefined function or variable 'accumArray'. Did you mean: >> accumarray3 vào tệp có tên
Undefined function or variable 'accumArray'. Did you mean: >> accumarray3, thì việc gọi hàm bằng tên hàm sẽ không thành công
curveplot Undefined function or variable 'curveplot'.
Nếu bạn gặp sự cố này, hãy thay đổi tên hàm hoặc tên tệp để chúng giống nhau
Để định vị tệp xác định chức năng này, hãy sử dụng tiện ích Tìm tệp MATLAB như sau
Trên tab Trang đầu, trong phần Tệp, bấm vào Tìm Tệp
Dưới , nhập
Undefined function or variable 'accumArray'. Did you mean: >> accumarray
4Dưới , nhập tên chức năng
Nhấp vào nút Tìm
Đảm bảo hộp công cụ cần thiết được cài đặt và phiên bản chính xác
Nếu bạn không thể sử dụng chức năng tích hợp sẵn từ hộp công cụ MATLAB và đã xác nhận rằng hộp công cụ đã được cài đặt, hãy đảm bảo rằng bạn có giấy phép hoạt động cho hộp công cụ đó. Sử dụng
function curveplot[xVal, yVal] - program code -4 để hiển thị các giấy phép hiện đang hoạt động. Để được hỗ trợ thêm về quản lý giấy phép, hãy xem Quản lý giấy phép của bạn
Đã khai báo, định nghĩa và khởi tạo;
Đã khai báo có nghĩa là một số khai báo nằm trong phạm vi. Ví dụ, trong một số mã của chức năng, một số khối có thể chứa một khai báo biến, e. g.
Undefined function or variable 'accumArray'. Did you mean: >> accumarray6. Nếu không có ít nhất một khai báo, bạn sẽ gặp lỗi biên dịch. Một tuyên bố trên danh nghĩa là một tham chiếu [có thể chuyển tiếp] đến một cái gì đó được xác định ở nơi khác
Được xác định có nghĩa là định nghĩa có thẩm quyền của biến có mặt ở đâu đó; . Tuyên bố [một mình] là không đủ để cung cấp một định nghĩa. Một định nghĩa đủ để khai báo [trong tệp đó]. Ví dụ: liên quan đến các toàn cầu được đề cập ở trên, những điều này sẽ phải xảy ra ở phạm vi ngoài cùng và không có
Undefined function or variable 'accumArray'. Did you mean: >> accumarray7. Đối với phạm vi toàn cầu, các định nghĩa bị thiếu [khi có khai báo] thường dẫn đến lỗi liên kết
Đối với phạm vi cục bộ, có một vài khai báo [i. e. không có khai báo chuyển tiếp như với phạm vi toàn cầu] cũng không phải là định nghĩa, do đó, định nghĩa/khai báo bị thiếu sẽ dẫn đến lỗi thời gian biên dịch
Khởi tạo áp dụng cho các biến và có thể có hoặc không có trong định nghĩa [chúng sẽ không được phép trong một khai báo đơn thuần]. Các biến cục bộ tại thời điểm sử dụng [i. e. read] được xác định là chưa được khởi tạo thường được gắn cờ có lỗi. Các biến toàn cục thường không được kiểm tra theo cách này, nhưng nếu một trình khởi tạo không được cung cấp thì nó thường sẽ nhận được số không hoặc null
Trong C, Khi nào chúng ta nói rằng một biến không được xác định?
Đối với một toàn cầu, trước đây. khi nó không có trong mã hoàn chỉnh. Đối với một địa phương, bạn có thể nói trong phạm vi chức năng
Nếu "is there" nghĩa là bạn đã xác định, thì vâng, tôi đồng ý. Tuy nhiên, một toàn cầu có thể được khai báo mà không được xác định, và sau đó, không, chúng tôi sẽ không nói nó được xác định, chúng tôi sẽ nói nó được khai báo hoặc có thể truy cập được
Nói chung, không nhất thiết phải chính xác như vậy trong hầu hết các trường hợp -- nếu muốn, chúng ta có thể nói đã xác định hoặc chưa xác định khi chúng ta thực sự muốn nói là đã khai báo hoặc chưa khai báo. Nhưng để chính xác và đúng với ngôn ngữ, chúng ta có thể phân biệt giữa hai
Thuật ngữ này thuộc về ngôn ngữ. Một ngôn ngữ khác có thể sử dụng các thuật ngữ khác nhau cho cùng một khái niệm hoặc có thể có các khái niệm khác nhau cho cùng một thuật ngữ và chúng sẽ không nhất quán với nhau, nhưng những điều này vẫn xảy ra
Việc một đặc tả ngôn ngữ nhất quán với chính nó là tốt, nhưng không có lý do thực sự nào để hai ngôn ngữ khác nhau đồng ý hoặc nhất quán