Saya pengguna baru Matlab, bisakah Anda membantu:
Saya memiliki kode berikut dalam file .M:
function f = divrat(w, C)
S=sqrt(diag(diag(C)));
s=diag(S);
f=sqrt(w'*C*w)/(w'*s);
Saya telah menyimpan file ini (divrat.M) di jalur Matlab normal, dan oleh karena itu saya mengasumsikan bahwa Matlab akan membaca fungsi ini ketika mulai dan fungsi ini harus tersedia untuk digunakan.
Namun, ketika saya mengetik
>> divrat(w, C)
Saya mendapatkan kesalahan berikut
???? Fungsi atau metode yang tidak terdefinisi 'divrat' untuk argumen input bertipe 'double'.
Apa pesan kesalahan yang menyuruh saya untuk melakukan, saya tidak dapat melihat kesalahan apa pun dalam kode atau panggilan fungsi?
Kode kesalahan menunjukkan definisi fungsi tidak dapat ditemukan. Pastikan anda memanggil fungsi dari ruang kerja yang sama dengan file divrat.m
yang disimpan. Dan pastikan fungsi divrat
bukan subfungsi, harusnya deklarasi fungsi pertama dalam file. Anda juga dapat mencoba memanggil fungsi dari file divrat.m
yang sama untuk melihat apakah masalahnya ada pada pemilihan ruang kerja atau fungsinya.
Ngomong-ngomong, mengapa anda tidak mengatakan
s = sqrt(diag(C));
Bukankah itu sama saja?
Juga, beri nama divrat.m
, bukan divrat.M
. Hal ini seharusnya tidak menjadi masalah pada kebanyakan OS, tetapi siapa tahu...
Anda juga bisa menguji apakah matlab bisa menemukan sebuah fungsi dengan menggunakan perintah which
, yaitu
which divrat
Fungsi itu sendiri adalah kode matlab yang valid. Masalahnya pasti sesuatu yang lain.
Coba panggil fungsi tersebut dari dalam direktori tempat fungsi itu berada atau tambahkan direktori tersebut ke dalam searchpath anda menggunakan addpath('pathname')
.