Menü
Bedava
kayıt
ev  /  internet/ matlab dosyasını açın. MATLAB Nasıl Doğru Kurulur (MATLAB Dağıtılmış Bilgi İşlem Sunucusu Dahil)

matlab dosyasını açın. MATLAB Nasıl Doğru Kurulur (MATLAB Dağıtılmış Bilgi İşlem Sunucusu Dahil)

Dosyalar, MATLAB sisteminde oldukça yaygın nesnelerdir. Dosya türlerinden bazıları önceki bölümlerde zaten tartışılmıştı. Bu ders, türünden bağımsız olan ve herhangi bir dosya için geçerli olan dosya özelliklerini kapsar.

Dosya genellikle tek bir adla birleştirilen bazı veri koleksiyonu. Dosya türü genellikle uzantısına göre belirlenir. Dosyayı bir bütün olarak ele alıyoruz, ancak fiziksel olarak diskte birkaç alanla temsil edilebiliyor - bu durumda dosyanın parçalanmış olduğunu söylüyorlar.

Herhangi bir dosyayı kullanmadan önce, açık ve kullanım sonunda - kapalı... Birçok dosya aynı anda açılabilir ve okunabilir. Dosyaları açma ve kapatma komutlarını ele alalım.

  • Emretmek açık isim adın bir dizi karakter veya bir sembolik değişken içermesi gerektiğinde, ad parametresinin ayrıştırılmasına ve ad adındaki uzantıya bağlı olarak dosyaları açar:
    • değişken- Dizi Düzenleyicide ada göre adlandırılan bir dizi açar;
    • .mat- dosyayı açar, çalışma alanındaki yapıdaki değişkenleri kaydeder;
    • .incir- Özellik Editöründe açar;
    • .m- editör-hata ayıklayıcıda m-dosyasını açar;
    • .mdl- modeli Simulink'te açar;
    • .R- varsa, aynı ada sahip bir m-dosyasını açar;
    • .html- açılır HTML belgesi yardım tarayıcısında.

MATLAB yolunda uzantıya sahip dosyalar varsa, adın açıldığı komutun döndürdüğü dosya, değilse, dosya dosya sistemi... Dosyanın bir ad uzantısı yoksa, dosya biçimi hangi ("dosya adı") işlevi tarafından algılanacak olan programla açılır. üstünde. Open, orepxxx işlevlerini çağırır, burada xxx dosya uzantısıdır. İstisnalar, openvar'ın çağrıldığı çalışma alanı değişkenleri ve openim'in çağrıldığı grafiklerdir. Kullanıcılar orepxxx adlı t-dosyaları oluşturarak, dosyaların işlenmesini değiştirebilir ve listeye yeni uzantılar ekleyebilir. open ile açılan dosyalar onxxx tarafından çağrılan editörlerden kapatılmalıdır.

  • = uigetfile (FILTERSPEC. Başlık)... Başlık adlı bir iletişim kutusu ve bir FILTERSPEC filtresi (örneğin, dosya uzantılarını içeren bir hücre dizisi) açar ve kullanıcı tarafından seçilen dosyayı ve ona giden yolu döndürür. Dosya yoksa veya kullanıcı İptal'i tıkladıysa FILENAME = 0 döndürür. = uigetfile (FILTERSPEC, Başlık. X. Y) iletişim kutusunu X, Y noktasına (koordinatlar piksel olarak) yerleştirir.

Uigetfile ("*. M; *. Şekil; *. Mat: *. Mdl", "Tüm MATLAB Dosyaları (* .m, * .fig, * .mat. * .Mdl)") ...

  • = uiputfile (FILTERSPEC. TITLE) dosyayı kullanıcı tarafından kontrol edilen bir iletişim kutusuna kaydeder. Parametreler, uigetfile işlevindekiyle aynıdır.
  • Emretmek ui aç bir iletişim kutusu açar ve kullanıcı bilinen bir uzantıya sahip bir dosya seçtiyse, onu open kullanarak çağırırsa veya dosya adı bilinmeyen bir uzantıya sahipse, uigetfile çağrılır. Uiopen için giriş argümanları mat lab, load, Figure, simulink, editor olabilir. Giriş argümanları olmadan veya bir giriş argümanı matlab ile, iletişim kutusu sizden * .m, * .fig, * .mat, * .mdl (Simulink kuruluysa), * .cdr (durum akışı kuruluysa) seçmenizi ister. * .rtw, *.tmf, * .tlc, * .c, * .h, * .ads, * .adb (Gerçek Zamanlı Atölye kuruluysa). load argümanıyla - * .mat. Figure argümanı ile * .fig sunulur; simul mürekkep - * .mdl, editör - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

açık şekil

  • Emretmek uiload komutu kullanarak kullanıcı tarafından kontrol edilen bir iletişim kutusunda bir dosya açar yük.

İşlev ui içe aktarma Lansmanlar İçe aktarma sihirbazı(İçe Aktarma Sihirbazı), geçerli klasördeki veya Windows panosundaki bir dosyadan içe aktarır. Seçime uyuyor Verileri İçe Aktar menüden Dosya veya seçim Özel yapıştır menüden Düzenlemek MATLAB.

  • ui içe aktarma (DOSYAADI)- FILENAME dosyasını açarak İçe Aktarma Sihirbazını başlatır. İçe aktarma sihirbazı, bir önizleme için verileri gösterir. Veriler ve MATLAB değişkenleri olarak gösterimi, önizleme penceresinde görünür. Gerçek veriler, metin ve başlıklar farklı MATLAB değişkenleriyle temsil edilir. ASCII verileri için, Alma Sihirbazının sütun sınırlayıcılarını tanıdığından emin olmalısınız. Kendi başına yalnızca bir sekme, boşluk, virgül veya noktalı virgül tanıyabilir. Düğmeye tıklamanız gerekiyor Sonraki ve sonraki pencerede Sihirbaz tarafından yapılan ayırıcı seçimini onaylayın veya Başka ve herhangi bir ayırıcı girin.
  • ui içe aktarma ("-dosya")- ilk olarak dosya seçimi iletişim kutusunu görüntüler.
  • ui içe aktarma ("-pastespecial")- öncelikle önizleme için Windows panosunun içeriğini görüntüler.
  • S = ui içe aktarma (...) sonuç değişkenlerini S yapısının alanları olarak saklar.
  • Emretmek kullanmak- Windows iletişim kutusu ile kullanıcı kontrollü kaydetme (kaydetme komutu ders 2'de açıklanmıştır).
  • İşlev farklı kaydet- bir çizimi veya Simulink modelini istenilen formatta bir depolama ortamına veya baskı özellikli bir cihaza kaydeder.
  • İşlev saveas (H, "DOSYA ADI")- FILENAME dosyasındaki tanımlayıcı grafik H'nin komutuna göre verileri kaydeder. Dosya biçimi, FILENAME adının uzantısına göre belirlenir.
  • İşlev saveas (H. "DOSYA ADI". "FORMAT")- aynısını ancak FORMAT parametresiyle gerçekleştirir (biçim, dosya adı uzantısıyla aynı şekilde belirtilir ve bundan farklı olabilir). FORMAT, dosya adı uzantısına göre önceliklidir. İşlev parametreleri:
    • "incir"- rakamı (grafiği) ikili bir incir dosyasına kaydedin;
    • "m" veya "mfig"- rakamı ikili bir incir dosyasına kaydedin ve yüklemek için bir m dosyası oluşturun;
    • "mmm"- çizimi, çizim oluşturma komutlarının bir dizisi olarak bir m-dosyasına kaydedin. En son grafik özelliklerini desteklemeyebilir.

Kayıtlar (gcf. "Çıktı", "şek") kayıtlar (gcf, "çıktı", "bmp")

Komut veya işlev silmek bir dosyayı veya grafik nesnesini siler.

Ders numarası 19.

Dosyalarla çalışma

    Dosyaları Açma ve Kapatma

    İkili dosya işlemleri

    Biçimlendirilmiş dosya işlemleri

    dosya konumlandırma

    özel dosyalar

Dosyalar, MATLAB sisteminde oldukça yaygın nesnelerdir. Dosya türlerinden bazıları önceki bölümlerde zaten tartışılmıştı. Bu ders, türünden bağımsız olan ve herhangi bir dosya için geçerli olan dosya özelliklerini kapsar.

Dosyaları Açma ve Kapatma

Dosya genellikle tek bir adla birleştirilen bazı veri koleksiyonu. Dosya türü genellikle uzantısına göre belirlenir. Dosyayı bir bütün olarak ele alıyoruz, ancak fiziksel olarak diskte birkaç alanla temsil edilebiliyor - bu durumda dosyanın parçalanmış olduğunu söylüyorlar.

Herhangi bir dosyayı kullanmadan önce, açık, ve kullanım sonunda - kapalı. Birçok dosya aynı anda açılabilir ve okunabilir. Dosyaları açma ve kapatma komutlarını ele alalım.

    Adın bir dizi karakter veya bir sembolik değişken içermesi gereken açık ad komutu, ad parametresinin analizine ve ad adındaki uzantıya bağlı olarak dosyaları açar:

    • değişken - Dizi Düzenleyicide ada göre adlandırılan bir dizi açar;

      Mat - bir dosya açar, değişkenleri çalışma alanındaki bir yapıya kaydeder;

      Şekil - Özellik Düzenleyicisinde açar;

      M - düzenleyici hata ayıklayıcıda bir m dosyası açar;

      Mdl - modeli Simulink'te açar;

      R - varsa, aynı ada sahip bir m dosyası açar;

      Html - Yardım tarayıcısında bir HTML belgesi açar.

MATLAB yolunda uzantılı dosyalar varsa, bu durumda hangi name komutunun döndürdüğü dosya açılır, değilse dosya sisteminden dosya açılır. Dosyanın bir ad uzantısı yoksa, dosya biçimi igpsiGname işlevi ") tarafından algılanacak olan program tarafından açılır. orepxxx işlevleri, burada xxx dosya uzantısıdır.İstisnalar, openvar'ın çağrıldığı çalışma alanı değişkenleri ve openim'in çağrıldığı grafiklerdir.Kullanıcılar, orepxxx adlı t-dosyaları oluşturarak, dosya işlemeyi değiştirebilir ve listeye yeni uzantılar eklendi. open ile açılan dosyalar onxxx tarafından çağrılan editörlerden kapatılmalıdır.

    Uigetfile (FILTERSPEC. Başlık). Başlık adlı bir iletişim kutusu ve bir FILTERSPEC filtresi (örneğin, dosya uzantılarını içeren bir hücre dizisi) açar ve kullanıcı tarafından seçilen dosyayı ve ona giden yolu döndürür. Dosya yoksa veya kullanıcı İptal'i tıkladıysa FILENAME = 0 döndürür. = uigetfile (FILTERSPEC, Başlık. X. Y) iletişim kutusunu X, Y noktasına (koordinatlar piksel olarak) yerleştirir.

Örnek:

Uigetfile ("*. M; *. Şekil; *. Mat: *. Mdl". "Tüm MATLAB Dosyaları (* .m, * .fig, * .mat. * .Mdl)": ...

    Uiputfile (FILTERSPEC. TITLE), dosyayı kullanıcı tarafından kontrol edilen bir iletişim kutusuna kaydeder. Parametreler fonksiyondaki ile aynıdır uiget dosyası.

    ui open komutu bir iletişim kutusu açar ve kullanıcı bilinen bir uzantıya sahip bir dosya seçtiyse, onu open kullanarak çağırırsa veya dosya adı bilinmeyen bir uzantıya sahipse, uigetfile çağrılır. Uiopen için giriş argümanları mat lab, load, Figure, simulink, editor olabilir. Girdi bağımsız değişkenleri olmadan veya bir girdi bağımsız değişkeni matlab ile, iletişim kutusu sizden * .m, * .fig, * .mat,* .mdl (Simulink kurulu ise), *. cdr (durum akışı ayarlanmışsa), * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb (Gerçek Zamanlı Atölye kuruluysa). load argümanıyla - * .mat. Figure argümanı ile * .fig sunulur; simul mürekkep - * .mdl, editör - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Örnek:

açık şekil.

    uiload komutu, load komutunu kullanarak kullanıcı tarafından kontrol edilen bir iletişim kutusunda bir dosya açar.

Kullanıcı arabirimi içe aktarma işlevi, geçerli klasördeki veya Windows panosundaki bir dosyadan içe aktarma yapan Alma Sihirbazını başlatır. Dosya menüsünden Verileri İçe Aktar'ın seçilmesine veya MATLAB Düzen menüsünden Özel Yapıştır'ın seçilmesine karşılık gelir.

    Ui içe aktarma (FILENAME) - FILENAME dosyasını açarak İçe Aktarma Sihirbazını başlatır. İçe aktarma sihirbazı, bir önizleme için verileri gösterir. Veriler ve MATLAB değişkenleri olarak gösterimi, önizleme penceresinde görünür. Gerçek veriler, metin ve başlıklar farklı MATLAB değişkenleriyle temsil edilir. ASCII verileri için, Alma Sihirbazının sütun sınırlayıcılarını tanıdığından emin olmalısınız. Kendi başına yalnızca bir sekme, boşluk, virgül veya noktalı virgül tanıyabilir. İleri düğmesine tıklamanız ve sonraki pencerede Sihirbaz tarafından yapılan sınırlayıcı seçimini onaylamanız veya Diğer'i seçip herhangi bir sınırlayıcı girmeniz gerekir.

    ui içe aktarma ("-f i le") - ilk olarak dosya seçimi iletişim kutusunu görüntüler.

    ui import ("-pastespecial") - öncelikle Windows panosunun içeriğini önizleme için görüntüler.

    S = ui import (...) sonuç değişkenlerini S yapısının alanları olarak saklar.

    uisave komutu, bir Windows iletişim kutusu ile kullanıcı kontrollü bir kaydetmedir (kaydetme komutu ders 2'de açıklanmıştır).

    Saveas işlevi - bir çizimi veya Simulink modelini istenen formatta bir depolama ortamına veya yazdırma özellikli bir cihaza kaydeder.

    Saveas (H, "FILENAME") işlevi - verileri FILENAME dosyasındaki H tanımlayıcı grafik komutuna göre kaydeder. Dosya biçimi, FILENAME adının uzantısına göre belirlenir.

    Saveas işlevi (H. "FILENAME". "FORMAT") - aynı şeyi yapar, ancak FORMAT parametresiyle (biçim, dosya adı uzantısıyla aynı şekilde belirtilir ve bundan farklı olabilir). FORMAT, dosya adı uzantısına göre önceliklidir. İşlev parametreleri:

Örnekler:

saveas (gcf. "output", "fig") saveasCgcf, "output", "bmp")

Sil komutu veya işlevi, bir dosyayı veya grafik nesnesini siler.

    Dosya adını sil, geçerli klasördeki dosyayı siler. Kullanılabilir *. Dosya adı bir dize olduğunda, silme işlevi ("mw dosyası") biçiminde bir girişle tercih edilen kullanım.

    sil (H) tanımlayıcısı H olan bir grafik nesnesini siler. Bu nesne bir pencere ise, önceden kapatılır.

    Kapat (H) işlevi yalnızca grafik pencerelerini kapatır. Dosyaları kapatmak için f kapat komutunu kullanın.

Dosyaları diske yazmak için oldukça açık biçimlerde kullanılan save komutunu kullanın:

kaydetmek

dosya adını kaydet dosya adını kaydet varl var2 ... kaydet ... seçeneği kaydet ("dosya adı", ...)

Buna göre, diskten dosyaları okumak için load komutu kullanılır:

yük

dosya adı yükle dosya adı yükle X Y Z

dosya adı yükle -ascii dosya adı yükle -mat

Bu komutlarda dosya adı MS-DOS sınıfı işletim sistemlerinde kabul edilen kurallara göre belirlenir. Bu komutlar genellikle araç çubuğu düğmeleri ve dosya tarayıcısı tarafından çoğaltılır.

İkili dosya işlemleri

İkili, veya ikili, verileri makine kodları olan dosyalar olarak adlandırılır. Bu tür kodlarla yapılan temel işlemler aşağıda listelenmiştir.

    fopen (dosya adı, izin) - dosya adına ve izinde belirtilen parametreye sahip bir dosyayı açar ve şu değere sahip fid tanımlayıcısını döndürür: 0 - klavyeden oku (izin "r" olarak ayarlanmıştır); 1 - ekran çıktısı (izin "a" olarak ayarlanmıştır); 2 - bir hata mesajının görüntülenmesi (izin "a" olarak ayarlanmıştır); -1 - çıktılı dosya açılamadı mesaj mesajları Hatanın türü hakkında. fid genellikle diğer işlevler ve G/Ç programları tarafından bir argüman olarak kullanılır. Dosya adı dosya adı, dosyanın yolunu içerebilir.

Okumak için açılacak dosya mevcut dizinde bulunamazsa, fopen işlevi dosyayı MATLAB'da belirtilen yolda arar.

İzin parametresi aşağıdaki temel değerlerden birini alabilir (diğerleri için yardım sistemine bakın):

    "r" - dosyayı okumak için aç (varsayılan);

    "r +" - dosyayı okumak ve yazmak için açın;

    "w" - mevcut bir dosyanın içeriğini silin veya yeni bir tane oluşturun ve yazmak için açın;

    "a" - yeni bir dosya oluşturun ve açın veya mevcut bir dosyayı açınDosyanın sonuna eklenen kayıtlar.

Bu satıra bir "b" eklenmesi (varsayılan), sisteme dosyayı ikili modda açmasını söyler.

Bu satıra b yerine "t" eklemek, örneğin "rt", metin ve ikili dosyaları ayırt eden işletim sistemlerinde, sisteme dosyayı metin modunda açma talimatı verir. Örneğin, Windows / MS-DOS ve VMS için MATLAB'ın tüm sürümlerinde açamazsınız. Metin dosyası"rt" parametresi olmadan. Metin modunda fopen kullanarak dosya girdiğinizde, yeni satır karakterinden önceki tüm satır başları kaldırılır.

    Fopenfilename.permission, format) - Yukarıda açıklandığı gibi bir dosya açar, bir dosya kimliği ve mesaj döndürür. Ayrıca format parametresinin değeri, sayı formatını doğru bir şekilde belirlemenizi sağlar. Açıklamaları yardım sisteminde bulunabilecek 8 olası biçim vardır. Özellikle, biçim dizesi "yerel" (sistemin kurulu olduğu bilgisayarın biçimi), "vax", "sgau" (VAX ve Cray bilgisayarları) vb. olabilir.

Bazı fread veya fwrite çağrıları, fopen çağrısında belirtilen sayısal formatı geçersiz kılabilir.

    fids = fopen С all ") - standart akışlar О, 1 ve 2 hariç tüm açık dosyaların tanımlayıcılarını içeren bir vektör dizisi döndürür. Vektör öğelerinin sayısı, kullanıcı tarafından açılan dosyaların sayısına eşittir;

    Fopen (fid) - Tam dosya adını, .permission dizesini ve biçim dizesini döndürür. Geçersiz fid değerleri kullanılırsa, tüm çıktı bağımsız değişkenleri için boş dizeler döndürülür.

fclose komutu dosyayı kapatır. Aşağıdaki seçeneklere sahiptir.

    Durum = fclose (fid) - açıksa dosyayı kapatır. Kapatma başarılıysa 0'a, aksi takdirde -1'e eşit olan dosya durumunun durumunu döndürür. fid argümanı, açık dosyayla ilişkili tanımlayıcıdır (daha ayrıntılı bir açıklama için fopen işlevine bakın);

    durum = fclose ("tümü") tüm açık dosyaları kapatır. Başarı durumunda 0, aksi halde -1 döndürür.

Bir dosyayı açma ve kapatma örneği:

"Fid = fopen (" c: \ ex "." A + ") fid = 4

»Fkapat (4)

ans =

    Fread (fid, boyut, kesinlik) - verilen dosyadan ikili verileri okur ve bunları A matrisine yerleştirir. Çıkış argümanı sayısı, başarıyla okunan öğelerin sayısını içerir. fid değeri, fopen işlevi tarafından döndürülen bir tamsayıdır; size, okunacak veri miktarını belirten bir argümandır. Boyut belirtilmezse, f read veriyi dosyanın sonuna kadar okur.

Aşağıdaki boyut parametreleri kullanılır:

    n - n elemanı bir sütun vektörüne oku;

    Matrisi doldurmak için gerektiği kadar eleman okur tp.

Dolgu sütunlarla yapılır. Dosyada birkaç öğe varsa, matris sıfırlarla doldurulur. Okuma, gerekli boyuttaki matrisi doldurmadan dosyanın sonuna ulaşırsa, matris sıfırlarla doldurulur. Bir hata oluşursa, okuma son okunan değerde durur. Kesinlik parametresi, okuma değerlerinin sayısal kesinliğini belirleyen bir dizedir, her bir değer için okunan bit sayısını kontrol eder ve bu bitleri tamsayı, kayan nokta veya karakter olarak yorumlar.

    Fread (fid, size.precision, atla) - Her okumadan sonra atlanacak bayt sayısını belirten isteğe bağlı bir atlama argümanı içerir. Bu, sabit uzunluklu kayıtlardan bitişik olmayan alanlardaki verileri çıkarırken faydalı olabilir. Kesinlik "bitN 1 veya" ubitN " gibi bir bit biçimindeyse, atlama değeri belirtilir. ~ bit. Kesinlik için olası değerlerin kapsamlı bir listesi MATLAB yardım sisteminde bulunabilir;

    count = fwrite (fid, A, kesinlik) - A matrisinin öğelerini belirli bir kesinlikle temsil ederek bir dosyaya yazar. Veriler dosya sütununa sütuna yazılır ve sayım çıktı bağımsız değişkeni başarıyla yazılan öğelerin sayısını içerir. fid değeri, f open işlevinden bir tamsayıdır. Yeni bir satırın başlangıcından önce satır başı ekler;

    count = fwrite (fid.A, kesinlik, atlama) - aynısını yapar, ancak her yazmadan önce atlanacak bayt sayısını belirten isteğe bağlı bir atlama argümanı içerir. Bu, sabit uzunluklu kayıtlarda bitişik olmayan alanlara veri eklerken kullanışlıdır. Kesinlik "bitN" veya "ubitN" gibi bir bit biçimindeyse, atlama değeri bit olarak belirtilir.

Örnekler:

»Fid = fopen (" c: \ prim "," a + ")

Fid =

»A = büyü (7)

bir =

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

»Sayım = fwrite (j.A)

Sayı =

»Durum = fkapat (3)

Durum =

»Fid

Fopen ("c: \ prim". "R")

Fid =

"= Korku (3.)

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

sayı =

Biçimlendirilmiş dosya işlemleri

Biçimlendirilmiş verileri içeren dosyalara denir. biçimlendirilmiş dosyalar Aşağıda, bu tür dosyalarla çalışmak için kullanılan işlevler verilmiştir.

    Line = fgetl (fid) - Bir dize döndürür itibaren fid tanımlayıcılı dosya, satır sonu karakteri kaldırılmış. fgetl dosyanın sonunu algılarsa, -1 döndürür (daha fazlası için fopen'a bakın). Detaylı Açıklama fid);

    Satır = f alır (fid) - Satır sonu karakterini kaldırmadan dosyadan fid tanımlayıcılı satırı döndürür. fgets dosyanın sonunu algılarsa, -1 döndürür;

    Satır = fgets (fid.nchar) - Satırın ilk karakterlerinin nchar'ından fazlasını döndürmez. Satır sonu veya dosya sonu karakterinden sonra ek karakter okunmaz (fscanf işlevi için örneklere bakın);

    Count = fprintf (fid.format, A ....) - A matrisinin gerçek kısmında yer alan verileri format dizesinin kontrolü altında formatlar ve bunları fid tanımlayıcısı ile bir dosyaya yazar. fprintf işlevi, yazılan bayt sayısını döndürür. fid değeri, fopen işlevi tarafından döndürülen bir tamsayıdır.

fprintf işlevinin bağımsız değişken listesinde fid tanımlayıcısını atlarsanız, çıktı ekrana yazdırılır, tıpkı standart çıktı kullanılırken olduğu gibi (fid = l).

    fprintf (format, A ....) - kayıt standart bir cihaza yapılır - bir ekrana (ancak bir dosyaya değil). Biçim dizgisi, çıktı biçiminin sayı sistemini, hizalamayı, önemli basamakları, alan genişliğini ve diğer niteliklerini tanımlar. Niteleyiciler, hizalama karakterleri vb. ile birlikte alfabenin normal harflerini içerebilir.

Tablo 19.1. Biçim dizelerinde özel karakterler

sembol

Açıklama

\ n

Yeni hat

\ T

Yatay sekme

\ B

Bir karakter geri al

\ r

Satırbaşı

\ F

Yeni sayfa

\\

ters eğik çizgi

\" veya "

Tek alıntı

%%

Yüzde

fprintf işlevi, bazı istisnalar ve uzantılar dışında, ANSI C eşdeğeri fprintf O işlevi gibi davranır. Tablo 19.1 açıklanmıştır Özel semboller biçim dizesinde bulunur. Bir biçim dizesinde sayısal veya karakter verilerini görüntülemek için şunu kullanın: belirleyiciler, tabloda listelenmiştir. 19.2.

Tablo 19.2. Çıktı formatı belirteçleri

belirleyici

Açıklama

% NS Ondalık gösterim (imzalı)
*ile birlikte Tek karakter

% e

Alttaki "e" ile sayıların üstel gösterimi kayıt ol, örneğin 3.1415e + 00

Üstteki "E" kullanılarak sayıların üstel gösterimi kayıt olun, örneğin 3.1415Е + 00

% F

Sabit nokta notasyon sistemi

% G

% e ve % f'nin en kompaktı. Sondaki sıfırlar görüntülenmiyor

% G

% d ile aynı, ancak "E" için büyük harf kullanıyor


Sekizli gösterim (imzasız)

% s

Karakter dizesi

% sen

Ondalık gösterim (imzasız)

% x


Küçük harf ("a" ... "f") kullanan onaltılık gösterim

% X

Büyük harf ("A" ... "F") kullanan onaltılık gösterim

Yüzde işareti ile belirticideki harf arasına ek karakterler eklenebilir. Anlamları Tabloda açıklanmıştır. 19.3.

Tablo 19.3. Biçim belirleyici seçenekleri

sembol

Açıklama

Örnek

Eksi işareti" (-)

Sola yaslayan dönüştürülmüş argümanlar

% -5.2d

Artı işareti (+)

Her zaman bir sayı işareti yazdırın (+ veya -)

% + 5.2d

sıfır (0)

Boşluk yerine sıfırlarla doldurma

% 05.2d

sayılar

Yazdırılacak minimum karakter sayısını belirtir

%6f

Rakamlar (noktadan sonra)

Noktadan sonraki sayı, yazdırılan karakter sayısını belirlerondalık noktanın sağında

% 6.2f

    A = fscanf (fid, format) - fid tanımlayıcılı dosyadaki tüm verileri okur, format parametresinin değerine göre dönüştürür ve A matrisi olarak döndürür. fid tanımlayıcısının değeri, tarafından döndürülen bir tamsayıdır fopen işlevi. format parametresi, okunacak verinin formatını belirten bir dizgedir;

    Fscanf (fid.format, size) - size parametresi tarafından belirtilen veri miktarını okur, format parametresine göre dönüştürür ve başarıyla okunan öğe sayısıyla birlikte count döndürür. size parametresi, okunacak veri miktarını belirten isteğe bağlı bir bağımsız değişkendir. Aşağıdaki değerler geçerlidir:

    • inf - öğeleri dosyanın sonuna kadar okumak ve bunları dosyadakiyle aynı sayıda öğe içeren bir sütun vektörüne yerleştirmek;

      Boyut matrisini doldurmak için gerektiği kadar öğe okur tp. Dolgu sütunlarla yapılır. n değeri (ama hayır!) Inf değerini alabilir.

Biçim dizesi, sıradan karakterlerden ve/veya belirteçlerden oluşur. Belirticiler, okunan verinin türünü belirtir ve karakteri içerir. %, alan genişliği seçeneği ve format karakterleri. Olası biçim karakterleri tabloda listelenmiştir. 19.4.

Tablo 19.4. fscanf İşlevi Tarafından Kullanılan Karakterleri Biçimlendir

sembol

Açıklama

Bir dizi karakter; alan genişliği parametresi okunan karakter sayısını belirler

% NS

Ondalık

% e,% f,% g

kayan nokta numarası

% ben

işaretli tam sayı

% Ö

İmzalı sekizli sayı

% s

Boşluk olmayan karakter dizisi

% sen

İşaretli ondalık tamsayı

% x

İşaretli onaltılık tamsayı

[...]

karakter dizisi

sembol arasında % ve biçim karakterinin aşağıdaki karakterleri eklemesine izin verilir:

    Yıldız işareti (*), karşılık gelen değerin çıktı matrisinde saklanması gerekmediği anlamına gelir;

    Bir sayı dizisi maksimum alan genişliğini belirler;

    Harf, elde edilen nesnenin boyutunu belirtir: kısa bir tam sayı için h (örneğin, % n d), uzun bir tam sayı için 1 (örneğin, % ld) veya çift duyarlıklı bir kayan nokta sayısı için (örneğin, % lg ).

Örnekler:

"X = 0: pi/10: pi: y-;

»Fid = fpent" c: \ sin.txt ". V);

»Fprintf (fid." X5.3f * 10.6f \ n ".y): fclose (fid);

0.000 0.000000

0.314 0.309017

0.628 0.587785

0.942 0.809017

1.257 0.951057

1.571 1.000000

1.885 0.951057

2.199 0.809017

2.513 0.587785

2.827 0.309017

3.142 0.000000

»Fid = fopen (" c: \ sin.txt "." R ");

»Q = fscanf (fid." * G ".):

"Q"

ans =

0.3140 0.3090

0.6280 0.5878

0.9420 0.8090

1.2570 0.9511

1.5710 1.0000

1.8850 0.9511

2.1990 0.8090

2.5130 0.5878

2.8270 0.3090

»Fgetl (fid)

Cevap =

3.142 0.000000

»Fget'ler (fid)

Cevap =

»Fclose (fid)

Cevap =

dosya konumlandırma

Dosyalar okunduğunda ve yazıldığında, sürekli bir manyetik bant üzerine kayıt yapmak gibi, geleneksel olarak doğrusal veriler olarak temsil edilirler. Okumanın olduğu yer şu an(veya kaydın yapıldığı konum) özel bir Işaretçi. Sıralı erişim dosyaları kesinlikle baştan sona taranır ve rastgele erişim dosyalarında işaretçi, dosya verilerinin yazıldığı veya okunduğu herhangi bir yere yerleştirilebilir.

Böylece işaretçi dosya konumlandırma sağlar. Bir dizi konumlandırma işlevi mevcuttur:

    Eofstat = feof (fid) - fid tanımlayıcılı dosyanın sonuna ulaşılıp ulaşılmadığını kontrol eder. İşaretçi dosyanın sonundaysa 1, değilse 0 döndürür;

    Message = ferror (fid) - Hata hakkındaki bilgileri bir mesaj dizisi olarak döndürür. Fid bir tanımlayıcıdır açık dosya(ayrıntılı bir açıklama için fopen işlevine bakın);

    Mesaj = f hatası (f id, "temizle") - belirtilen dosya için hata göstergesini siler;

    Ferror (.) - Belirtilen dosya için son G/Ç işleminin hatasını döndürür.

fid ile belirtilen dosya üzerinde gerçekleştirilen son G/Ç işlemi başarılı olursa, mesaj boş bir dizedir ve errnum 0'dır.

Sıfırdan farklı bir hata, son G/Ç işleminde bir hata oluştuğunu gösterir. ileti parametresi, oluşan hatanın doğası hakkında bilgi içeren bir dize içerir.

Örnek:

»Fid = fopen (" c: \ örnek "." A + ")

Fid =

»T = korku (3,)

Boş matris: 4'e 0

»Korku (3)

Cevap =

Dosya okumaya açık mı? ... ... ...

    frewind (fid) - konum işaretçisini fid tanımlayıcılı dosyanın başlangıcına ayarlar;

    Durum - fseekCfid, ofset, orijin) - fid tanımlayıcılı dosyadaki işaretçiyi belirtilen konuma ayarlar - orijine göre offset parametresi tarafından belirtilen bayta.

Argümanlar:

    Fid, fopen işlevi tarafından döndürülen dosya tanımlayıcısıdır;

    offset, aşağıdaki şekilde yorumlanan bir değerdir:

    • offset> 0 - işaretçinin konumunu dosyanın sonuna doğru ofset baytlarla değiştirir;

      offset = 0 - işaretçinin konumunu değiştirmez;

      telafi etmek<0 - изменяет позицию указателя на offset байт в направлении к началу файла;

    Origin, aşağıdaki değerleri alan bir argümandır:

    • "bof veya -1 dosyanın başlangıcıdır;

      "cof" veya 0, işaretçinin dosyadaki geçerli konumudur;

      "eof" veya 1 - dosyanın sonu;

    durum bir çıktı argümanıdır. fseek işlemi başarılıysa değer 0, aksi takdirde -1'dir. Bir hata oluşursa, daha fazla ayrıntı için ferror işlevini kullanın;

    pozisyon = ftel I (fid) - fopen işlevi kullanılarak elde edilen, fid'li dosya için işaretçinin konumunu döndürür. Konum çıktı bağımsız değişkeni, dosyanın başına göre işaretçinin konumunu bayt cinsinden belirten, negatif olmayan bir tamsayıdır. İstek başarısız olursa, konum -1'dir. Hatanın yapısını görüntülemek için ferror işlevini kullanın.

Örnekler:

»F id-fopen (" c: \ örnek "." A + ")

Fid =

"Sayım = fwrite (3, büyü (6))

Sayı = 36

»FtelK3)

Cevap =

»Frewind (3): ftell (3)

Cevap =

"Fseek (3.12.0); ftell (3)

ans =

»Feof (3)

Cevap =

»Fkapat (3)

Cevap =

    S = sprintf (biçim, A, ...) - A matrisindeki verileri format parametresi tarafından belirtilen biçimde biçimlendirir ve bunlardan bir dize değişkeni s oluşturur;

    SprintfCformat, A ....) - daha önce açıklanan işleve benzer, ancak ek olarak bir hata oluşursa bir errmsg hata dizesi veya aksi takdirde boş bir dize döndürür. Biçim dizgisi, çıktı biçiminin sayı sistemini, hizalamayı, önemli basamakları, alan genişliğini ve diğer niteliklerini tanımlar. Niteleyiciler, hizalama karakterleri vb. ile birlikte normal karakterler içerebilir.fprintf işlevi, bazı istisnalar ve uzantılar dışında, benzer ANSI C işlevi fprintf 0 gibi davranır.

Örnekler:

"SprintfC" * 0,5g ". (L + kare (7)) / 4)

ans =

0.91144

»SprintfC "% s","Merhaba")

ans =

Merhaba

sscanf işlevi, bir dosyadan ziyade bir MATLAB sembolik değişkeninden veri okuması dışında fscanf işlevine benzer.

    А = sscanf (s, format) - sembolik değişken s'den verileri okur, bunları formatın değerine göre dönüştürür ve bu verilere dayalı olarak A matrisini oluşturur.Format parametresi okunacak verinin formatını belirler;

    A = sscanf (s, format, size) - size parametresi tarafından belirtilen veri miktarını okur ve format dizesine göre dönüştürür. size parametresi, okunacak veri miktarını belirten bir argümandır. Aşağıdaki değerler geçerlidir:

    • n - n elemanı bir sütun vektörüne okumak;

      inf - öğeleri bir sembolik değişkenin sonuna kadar okumak ve bunları bir dize değişkeniyle aynı sayıda öğe içeren bir sütun vektörüne yerleştirmek;

      Boyut matrisini doldurmak için gerektiği kadar öğe okur tp. Dolgu sütunlarla yapılır. n miktarı (ama değil!) Inf değerini alabilir.

    Sscanf (...) - s karakter değişkeninden verileri okur, formatın değerine göre dönüştürür ve A matrisine döndürür. count parametresi, başarıyla okunan öğelerin sayısını döndüren bir çıktı.argümanıdır; errmsg, bir hata oluştuğunda bir hata dizesi, aksi takdirde boş bir dize döndüren bir çıktı bağımsız değişkenidir. nextindex, s'deki karakter sayısından bir fazla olan bir çıktı bağımsız değişkenidir.

Biçim dizesi, sıradan karakterlerden ve belirteçlerden oluşur. Belirticiler, veri türünü belirtir ve karakteri içerir. %, alan genişliği seçeneği ve format karakterleri. Açıklamalar fscanf işlevi açıklamasında bulunabilir.

Örnek:

"S =" 4.83 3.16 22 45";

"= Sscanf (s."% F ")

bir =

4.8300 - 3.1600

22.0000

45.0000

Hata =

sonraki =

özel dosyalar

Aşağıdaki işlevler, bazı özel dosyalar:

    M = dlmread (dosya adı, sınırlayıcı) - Sınırlayıcı sınırlayıcıyı kullanarak ASCII ile ayrılmış dosya dosya adından verileri bir M dizisine okur. Bir sekme sınırlayıcı belirtmek için "\ t" i kullanın;

    M = dlmreadCfilename.delimiter, gs) - sınırlayıcı sınırlayıcıyı kullanarak bir ASCII sınırlayıcılı dosya dosya adındaki verileri, r ofsetinden (satırlara göre) ve c'den (sütunlara göre) başlayarak bir M dizisine okur. r ve c parametreleri sıfırdan başlayarak sayılır, böylece r = 0, c = 0 dosyadaki ilk değere karşılık gelir;

    M = dlmreadCfilename, deli mi ten, r, c, range) - Dizine alınmış veya adlandırılmış bir sınırlandırılmış veri aralığını ASCII formatında içe aktarır. Bir hücre aralığı kullanmak için, aralık parametresini aralık = [TopString. Sol sütun. BottomRow, RightColumn].

dlmread işlevinin argümanları aşağıdaki gibidir:

    Sınırlayıcı, bir ASCII elektronik tablosundaki tek tek matris öğelerini ayıran bir karakterdir;

    (,) - varsayılan ayırıcı;

    R, c - tablonun sol üst köşesindeki öğelere karşılık gelen matris öğelerinin alındığı elektronik tablonun hücresi;

    aralık, elektronik tablodaki hücre aralığını tanımlayan bir vektördür.

dlmwrite komutu, bir MATLAB matrisini elektronik tablo programları tarafından okunabilen ASCII ile sınırlandırılmış bir dosyaya dönüştürür:

    Yazma (fi 1 ename. A. sınırlayıcı) - A matrisini, matris öğelerini ayırmak için sınırlayıcı kullanarak dosya adı elektronik tablosunun sol üst hücresine yazar. Sekmeyle ayrılmış bir dosya oluşturmak için "U" kullanın. 0 değerine sahip tüm öğeler atlanır. Örneğin, dizi dosyada "1., 2" olarak görünecektir (ayırıcı virgül ise):

    dlmwrite (dosya adı, A, sınırlayıcı, r, c) - sınırlayıcıyı kullanarak r ve c ile belirtilen konumdan başlayarak A matrisini dosya adına yazar;

    info = imfinfo (filename.fmt) - alanları grafik dosyasındaki görüntü hakkında bilgi içeren bir yapı döndürür. Dosya adı bağımsız değişkeni, grafik dosyasının adını belirten bir dizedir, fmt, dosyanın biçimini belirten bir dizedir. Dosya, geçerli dizinde veya MATLAB yolunda belirtilen dizinde olmalıdır. imflnfo dosyaadı adında bir dosya bulamazsa, dosyaadı.fmt adında bir dosya arar.

Tablo 19.5, fmt argümanı için olası değerleri gösterir.

Tablo 19.5. Desteklenen grafik formatları ve tanımları

Dosya adı, birden fazla görüntü içeren bir TIFF veya HDF dosyasıysa, 1 nf o, dosyadaki her görüntü için ayrı bir öğeye (yani ayrı bir yapıya sahip) sahip bir yapı dizisidir. Örneğin bilgi (3), dosyadaki üçüncü görüntü hakkında bilgi içerir. Bilgideki alanların çoğu, belirli dosyaya ve biçimine bağlıdır. Ancak, ilk dokuz alan her zaman aynıdır. Tablo 19.6 bu alanları listeler ve anlamlarını açıklar.

Tablo 19.6. Bilgi yapısı alanları ve anlamları

Alan Anlam
Dosya adı Dosyanın adını içeren bir dize; dosya geçerli dizinde değilse, satır dosyanın tam yolunu içerir
DosyaModTarihi Dosyanın en son değiştirildiği tarihi içeren bir dize
Dosya boyutu Dosyanın boyutunu bayt olarak gösteren bir tam sayı
Biçim fmt parametresi tarafından belirtilen dosya biçimini içeren bir dize; JPEG ve TIFF dosyaları için üç karakterlik bir değer döndürülür
FormatSürüm Biçim sürümünü açıklayan bir dize veya sayı
Genişlik Piksel olarak görüntünün genişliğini gösteren bir tam sayı
Boy uzunluğu Görüntünün piksel cinsinden yüksekliğini gösteren bir tam sayı
BitDepth Piksel başına bit sayısını gösteren bir tam sayı
Renk Türü Görüntünün türünü açıklayan bir dize: RGB görüntüsü için "truecolor", gri tonlamalı bir görüntü için "gri tonlamalı" veya dizine alınmış renkli bir görüntü için "indekslenmiş"

    Bilgi = imfinfo (dosya adı) - içeriğe göre dosya biçimini belirlemeye çalışır. Örnek:

»Bilgi = irrifinfo (" С: \ sergi \ Internet.bmр ")

bilgi =

Dosya adı: "C: \ Sergi \ Internet.bmr"

Dosya Boyutu: 481078

Biçim: "bmp"

FormatVersion: "Sürüm 3 (Microsoft Windows 3.x)"

veya uint8 sınıfının bir truecolor (RGB) görüntüsü, imwrite komutu dizinin gerçek değerlerini bir dosyaya yazar. A sınıfı double ise, imwrite komutu, uint8 (yuvarlak (255 * A)) dönüşümünü kullanarak yazmadan önce dizideki değerleri geçersiz kılar. Bu işlem, bir aralıktaki kayan noktalı sayıları bir aralıktaki 8 bitlik tam sayılara dönüştürür. ftnt için geçerli değerler, imfinfo komutuyla aynıdır;

    imwrite (X, map, filename, fmt) - X dizisinde bulunan indekslenmiş görüntüyü ve ilgili tar renk paletini dosya dosya adına yazar. X bir uint8 görüntüsü içeriyorsa, imwrite komutu dizinin gerçek değerlerini bir dosyaya yazar. X double ise imwrite komutu, uintS (X-l) dönüşümünü kullanarak yazmadan önce dizideki değerleri geçersiz kılar. Katran paleti çift sınıftan olmalıdır; imwrite işlevi, uint8 (yuvarlak (255 * mar)) dönüşümünü kullanarak katran değerlerini geçersiz kılar;

    imwrite (.... dosyaadı) - Görüntüyü dosya adına, dosya uzantısı tarafından belirtilen biçimde yazar. Uzantı, fmt parametresi için geçerli değerlerden biri olabilir;

    imwrite (.... Parametre, Değer ....), çıktı dosyasının çeşitli özelliklerini kontrol eden parametreleri tanımlar. Seçenekler HDF, JPEG ve TIFF dosyaları için kullanılır;

    M = wklread (dosya adı) - Lotusl23 (WK1) elektronik tablosunu M matrisine okur;

    М = wklread (filename.r.c) - (r, s) değerleriyle belirtilen hücreden başlayarak verileri okur. r ve c parametreleri sıfır tabanlıdır, böylece r = 0, c = 0 dosyadaki ilk hücreyi tanımlar;

    M = wklread (dosya adı, r, c, aralık) - Aralık tarafından belirtilen değer aralığını okur, burada aralık aşağıdaki biçimlerden birinde olabilir:

    • [top_line.txt] biçiminde bir hücre aralığını tanımlayan dört öğeli bir vektör. left_column, bottom_line, right_column];

      bir diziyle tanımlanan hücre aralığı, örneğin "A1 ... C5";

      "Satış" gibi bir dize olarak belirtilen bir aralık adı.

    wklwrite (filename.M) - M matrisinin değerlerini Lotus 123 WK1 elektronik tablosunun dosya dosya adına yazar;

    wklwrite (dosya adı, M, r, c) - (r, s) değerleriyle belirtilen hücreden başlayarak verileri yazar. r ve c parametreleri sıfır tabanlıdır, dolayısıyla r = 0, c = 0 elektronik tablodaki ilk hücreyi tanımlar.

Tablo 19.7, imread işleviyle okunabilecek görüntü biçimlerini gösterir. imwrite işlevi için parametre listeleri ve olası değerleri tabloda yer almaktadır. 19.8.

Yukarıda tartışılan işlevlerin çoğunun kullanıcılar tarafından nadiren kullanıldığına dikkat edilmelidir. Ancak, sistemik amaçlar için yaygın olarak kullanılırlar ve uzmanların büyük ilgisini çekerler.

Tablo 19.7. Dosya biçimleri ve kısa açıklamaları

Biçim varyantlar
BMP 1-bit, 4-bit, 8-bit ve 24-bit sıkıştırılmamış görüntüler; 4 bit ve 8 bit RLE sıkıştırılmış görüntüler
HDF Renk paleti olan veya olmayan 8 bitlik bit eşlemler; 24 bit bit eşlemler
JPEG Herhangi bir JPEG görüntüsü; Yaygın olarak kullanılan bazı uzantılara sahip JPEG görüntüleri
PCX 1 bit, 8 bit ve 24 bit görüntüler
tiftik -Bit, 8-bit ve 24-bit sıkıştırılmamış görüntüler dahil olmak üzere herhangi bir TIFF görüntüsü; Packbit sıkıştırmalı 1 bit, 8 bit ve 24 bit görüntüler; CCITT sıkıştırmalı 1 bitlik görüntüler
XWD 1-bit ve 8-bit Zpixmap'ler; XYBitmap'ler; 1-bit XYPixmap'ler

Tablo 19.8. Grafik dosyaları yazarken kullanılan parametreler

Parametre Anlam Varsayılan değer
HDF dosyaları için seçenekler
"Sıkıştırma" Şu değerlerden biri: "none", Vie "," jpeg " "rle"
"Kalite" 0 ile 100 arasında bir sayı; parametre "Sıkıştırma" = "jpeg" için desteklenir; sayı ne kadar yüksekse, dosyanın kalitesi o kadar yüksek (sıkıştırma sırasında dosyanın daha az bozulması) ve boyutu o kadar büyük olur 75
"Yazma Modu" Şu değerlerden biri: "üzerine yaz", "ekle" "üzerine yaz"
JPEG dosyaları için seçenekler
"Kalite" 0 ile 100 arasında bir sayı; sayı ne kadar yüksek olursa, dosyanın kalitesi o kadar yüksek olur (dosyayı sıkıştırırken daha az bozulma) ve dosya boyutu o kadar büyük olur. 75
TIFF dosyaları için seçenekler
"Sıkıştırma" Aşağıdaki değerlerden biri: "none", "packbits", "ccitt"; "ccitt" değeri yalnızca ikili (iki renkli) görüntüler için geçerlidir ikili görüntüler için "ccitt"; diğer herkes için "paket bitleri"
"Açıklama" Herhangi bir dize; ImageDescription alanının değeri imfinfo komutu tarafından döndürülür boş satır
"Çözünürlük" x ve y yönlerinde çözünürlük için skaler değer
72

Ne yeni öğrendik?

Bu eğitimde şunları öğrendik:

    Dosyaları açın ve kapatın.

    İkili ve biçimlendirilmiş dosyalar üzerinde işlemler gerçekleştirin.

    Dosyayı konumlandırın.

    Özel dosyalar uygulayın.

M dosyaları, birçok MATLAB program komutunu tek bir dosyada saklamanıza izin verir.
dosyasını seçin ve ardından bunları tek bir komutla veya fareyi kullanarak çalıştırın.

Basit problemleri ilk denemede oldukça kolay ve doğru bir şekilde çözebilirsiniz,
ancak, daha karmaşık sorunlar genellikle deneme yanılma yoluyla çözülür - başlatma,
bir dizi komutu arka arkaya birkaç kez düzenleme ve yeniden başlatma. Süre
Komut Geçmişi penceresi baştan sona nasıl yararlı olabilir?
Bu sürecin ilk aşamaları, sonuçta çok daha fazlasını bulacaksınız.
M dosyalarını kullanmak verimli olacaktır. M dosyaları da izin verir
sorunun çözümünü programın diğer kullanıcılarıyla paylaşın
MATLAB ve başkalarının okuması için sonuçlarınızı biçimlendirin. var
iki farklı M dosyası türü: M komut dosyası dosyaları ve M işlev dosyaları. Biz
nasıl yapıldığına benzer şekilde, her iki M dosyasının da kullanımını göstereceğiz.
yukarıda tartışılan sorunlara çeşitli çözümler sunuyoruz.

M dosyaları, aşağıdakileri içeren sıradan metin dosyalarıdır:
MATLAB program komutları. Bu dosyaları oluşturabilir ve değiştirebilirsiniz,
herhangi bir metin düzenleyici veya kelime işlemci kullanarak
dosyaları ASCII formatında düz metin olarak kaydedebilir. (Bunlar
Windows'ta Notepad ve WordPad, sistemlerde emacs ve vi gibi düzenleyiciler
UNIX.) Daha fazla kolaylık için yerleşik Düzenleyici modülünü kullanabilirsiniz.
edit komutu ile başlatılabilen (editör) kendisidir.
(yeni bir dosyayı düzenlemek için) veya mevcut bir M-dosyasının adını seçerek
geçerli dizin. Editör modülünü başlatmak için şunları da yapabilirsiniz:
Dosya menüsünü veya paneldeki en soldaki iki simgeyi kullanın
hem yeni bir M dosyası oluşturmak hem de zaten açmak için araçlar
var olan. Geçerli Dizin penceresindeki M dosyasına çift tıklayın
(Geçerli Dizin) ayrıca seçilen dosyayı Editör modülünde açacaktır.

M-dosyaları-komut dosyaları

M-komut dosyası, aşağıdakiler için bir dizi MATLAB program komutu içerir:
belirli bir sırayla başlatın. Şimdi size bir M-dosyasının nasıl oluşturulacağını göstereceğiz.
daha önce tartışılan matematik problemini çözmek için bir komut dosyası. Oluşturmak
aşağıdaki satırları içeren bir dosya:

x =;

Bu dosyayı mevcut dosyanızda taski.m olarak kaydettiğinizi varsayalım.
dizin veya yolunuzun bir dizini. dosyaya atayabilirsiniz
herhangi bir şekilde adlandırın (işletim sisteminiz farklı olabilir
özellikler), ancak .t uzantısı gereklidir.

MATLAB programınızı çalıştırabilir (veya çalıştırabilirsiniz)
Komut Penceresinde taski komutunu girerek komut dosyası. (Sen değil
.m uzantısı buraya girilmelidir; MATLAB programı otomatik olarak
dosyaları aradığında uzantıyı ekler.) Sonuçları görüntüle (ancak değil
sonucu hesaplamak için kullanılan komutlar) pencerede görüntülenecektir.
Komut Penceresi Komut dizisi şimdi
M-dosyası task1.m değiştirilerek kolayca değiştirilebilir. Örneğin, eğer
günahı (0.0001) / 0.0001'i de hesaplamak istiyorsanız, M-dosyasını değiştirebilirsiniz:

uzun biçim
x =;
y = günah (x) ./ x

ve ardından, Taski komutunu tekrar girerek değiştirilmiş komut dosyasını çalıştırın.
Ancak önce değişikliklerinizi görev dosyasına kaydettiğinizden emin olun; aksi halde
durumda, MATLAB bu değişiklikleri tanımıyor.

  • M-komut dosyaları çalıştırıldığında ayarlanan değişkenlerden bazıları, bu değişkenleri doğrudan Komut Penceresine girmişsiniz gibi kaydedilecektir. Örneğin, yukarıda tartışılan program, gelecekte tüm sayısal sonuçların 15 ondalık basamakla görüntülenmesine neden olacaktır. 5 karakterlik formata geri dönmek için format kısa komutunu girin.

hücre modu

MATLAB 7 programının yeni özellikleri, M-dosyasını bölmenize izin verir -
hücreler adı verilen parçalara (öğeler) komut dosyası. Bu özellikle yararlıdır
M dosyanız uzunsa veya yayınlamayı düşünüyorsanız (son
konu "M dosyalarının yayınlanması" bölümünde tartışılmaktadır). başlatmak için
yeni hücre, bir yorum satırı ekleyin (bu
hücre başlığı), bu satıra %% iki yüzde karakteriyle başlayarak. eğer açarsan
Editör modülünde M-file ve Cell => Enable Cell menü komutunu seçin
Mod (Hücre => Hücre modunu etkinleştir), bu durumda ilk panelin altında
ikinci araç çubuğu görüntülenecektir. üzerine tıkladığınızda
M dosyasındaki herhangi bir satır, bu satırın ait olduğu hücre
soluk sarı ile vurgulanır. bunu hesaplayabilirsin
Hücre => Geçerli Hücreyi Değerlendir menü komutunu seçerek hücre.
geçerli hücre) veya Hücreyi değerlendir simgesini tıklayarak.
Yalnızca birinde değişiklik yaptıysanız, bu oldukça yararlı olabilir.
hücre ve komut dosyasının tamamını tekrar çalıştırmak istemiyorum. eleman da var
Hücreyi değerlendir ve ilerlet işlemini gerçekleştirmek için menü ve simge
(Hücreyi hesaplayın vb.). Hücre modunu açtığınız için, ayrıca
Hücre => Hücre Bölücü Ekle menü komutunu seçerek ek hücreler oluşturun
(Hücre => Hücre Ayırıcı Ekle) veya % + simgesine tıklayarak.

M-files-syenaries'in başlatılması

M-komut dosyasının sonuçlarının tekrarlanabilir olması için komut dosyasının
kendi kendine yeten, yapabileceğiniz diğer değişkenlerden bağımsız
MATLAB program oturumu sırasında öncekinden kalan herhangi bir yere ayarlayın
hesaplama programı da silinmelidir. Örneğin, sorarsanız
Komut Penceresinde sin adlı bir değişken ve ardından
Task1.m komut dosyasını çalıştırın, aşağıdaki gibi bir hata mesajı alacaksınız
şu anda sin bir değişkeni temsil edecek, normal bir yerleşik değil
işlev. Bunu akılda tutarak, M-dosyasının başındaki tümünü temizle satırını girebilirsiniz.
önceki değişken ayarlarının olmadığından emin olmak için komut dosyası
sonuçları etkileyecektir. Ayrıca başlangıçta tümünü kapat satırına girebilirsiniz.
Tüm görüntü pencerelerini kapatmak için grafikler oluşturan M-komut dosyası ve
sıfırdan başlamak.
Daha önce belirtildiği gibi, M-komut dosyasındaki komutlar otomatik olarak
Komut Penceresinde görüntülenir. İsterseniz
komutlar sonuçlarla birlikte görüntülendi, eko on komutunu ekleyin
betiğin başlangıcı (sonuna echo off komutunu eklemek de yararlıdır
senaryo). Daha sonra M dosyasındaki tüm yorumlar da yansıtılacaktır. Başlangıçta
uzun bir M-komut dosyası, böyle bir işlem aşağıdakileri izlemek için yararlıdır:
hangi çıktı hangi girdiyle eşleşir.

Aşağıda, daha ayrıntılı yorumlar içeren task1.m dosyasının bir sürümü bulunmaktadır.
hem girişi hem de çıkışı görüntüler.

tümünü temizle % eski değişken tanımlarını kaldır
echo on% girdiyi komut penceresinde göster
format uzun% 15 haneli ekranı aç
x =; % x değerlerini tanımla
y = sin (x) ./ x% istenen bölümleri hesapla
% Bu değerler, limitin olduğu gerçeğini göstermektedir.
% sin (x) / x, 0'a yaklaştıkça 1'e eşittir.
Eko kapalı

Başlangıçta, MATLAB programı varsayılan yolu şurada arar:
startup.m adlı bir M-script dosyasının konusu. Böyle bir dosya oluşturursanız, o zaman
içerdiği komutlar her çalıştığında çalışır
MATLAB programı. Ayarlarınızı kaydetmek için bu dosyayı kullanabilirsiniz,
bir oturumdan diğerine geçen, örneğin, geçerli oturumdaki değişiklikler
dizin veya yol. (Yukarıda tartışılan cd ve addpath komutlarına ek olarak,
dizinleri yoldan kaldırmak için rmpath komutunu kullanabilirsiniz.)

M-dosyaları-fonksiyonları

M-files-işlevleri, M-files-script'lerinin aksine, şunları belirtmenize izin verir:
MATLAB komut satırından bu tür M dosyalarını çalıştırdığınızda giriş değerleri
veya başka bir M dosyasından. Önceki bölümde belirtildiği gibi, ayrıca
anonim işlev sözdizimini kullan (@) (programda mevcut değil
MATLAB 6 ve öncesi) veya özel ayarlamak için satır içi komut
komut satırında kendi işlevleri. Ancak, bu yöntemler görevi sağlar
sadece bir satırda çalışır. Bu nedenle, M-dosyaları için gereklidir
daha karmaşık işlevlerin ayarlanması. M-dosya-komut dosyası, M-dosya-fonksiyonu gibi
dosyanızda bulunabilecek düz bir metin dosyasıdır.
geçerli dizin veya MATLAB yolunuzdaki herhangi bir yer.

Yukarıda tartıştığımız, hesapladığımız soruna geri dönelim.
sin (x) / x'in bazı değerleri, burada bazı b değerleri için x = 10 ^ b. hariç
ek olarak, en küçük b değerini bulmak istediğinizi varsayalım.
sin (10 ^ b) / (10 ^ b) ve sonucun 15 basamaklı hassasiyetle 1 olduğunu.

Aşağıda, hedefle derlenmiş sinelimit.m adlı bir M dosyası işlevi verilmiştir.
bu soruyu açıklığa kavuşturmak:

fonksiyon y = sinüs limit(ler)i
% SINELIMIT, x = 10 ^ (- b) için sin (x) / x'i hesaplar
% burada b = 1, ..., c.
Uzun biçimlendir
b = 1: c;
x = 10. ^ (- b);
y = (sin (x) ./ x) ";

Dosyanın ilk satırı, tanımlayan kelime işleviyle başlar.
dosya M-dosya-fonksiyonu olarak. (Editör modülünde bu, ayrılmış bir
kelime mavi renkle vurgulanmıştır.) M-dosyasının ilk satırı işlevin adını belirtir ve
hem gelen bağımsız değişkenleri (veya parametreleri) hem de giden değerleri açıklar.
Bu örnekte, fonksiyon sinelimit olarak adlandırılır. Dosya adı (hariç
extensions.t) ve işlev adı eşleşmelidir. Bunu yeni oluşturduğunuzda
Adsız bir düzenleyici penceresinde M dosyası işlevi ve Kaydet komutunu seçin
(Kaydet), Editör modülü sinelimit.m dosyasının kendisini adlandırır.
Örneğimizdeki işlevin giriş için M-dosyasının içinde olan bir öğesi vardır.
s olarak gösterilir. Sonuç olarak bir öğe de döndürülür -
işlevin yürütülmesinin sonunda görünen y değeri.
M-fonksiyonu dosyasının ilk satırını bir tane ile sağlamak iyi bir uygulamadır.
veya M-dosyasının ne yaptığını açıklayan daha fazla yorum satırı. nerede
yardım komutu otomatik olarak getirecek bu bilgi... Örneğin:

>> yardım sinelimit

SINELIMIT, x = 10 ^ (- b) için sin (x) / x'i hesaplar
nerede b = 1,. ... ... , ile birlikte.

M dosyasındaki diğer satırlar işlevi tanımlar. Bu örnekte, b olarak ayarlanmıştır
1'den s'ye kadar tam sayılardan oluşan bir dizi vektörü olarak, sonra x
b'den hesaplanır ve son olarak y, x'ten belirlenir.

  • sinelimit.m'deki b, x ve y gibi M-fonksiyon dosyasında kullanılan değişkenler yerel değişkenlerdir. Bu, M-komut dosyasında tanımlanan değişkenlerin aksine, bu değişkenlerin Komut Penceresinde kullanmış olabileceğiniz aynı ada sahip başka değişkenlerle ilişkili olmadığı anlamına gelir. MATLAB programı, M-file işlevi yürütüldükten sonra bu değişkenlerin değerlerini hatırlamaz. Daha fazla bilgi için, Bölüm 4'teki M-Fonksiyon Dosyalarındaki Değişkenler bölümüne bakın.

b, x ve y'yi belirten satırların bir nokta c ile bittiğine dikkat edin.
virgül. Satırların sonunda noktalı virgül kullanılması,
bu satırlar için sonuçların çıktısı, yani bu satırların çalışmasının sonucu olmayacaktır.
Komut Penceresinde görüntülenir. Rağmen
ara hesaplamaların sonuçlarını görüntülemek faydalı olabilir
hata ayıklama için, temel olarak M-fonksiyon dosyasındaki tüm çıktıları bastırmalısınız.
Aşağıda sinelimit fonksiyonunun nasıl kullanıldığını gösteren bir örnek verilmiştir:

»Sinelimit (5)
ans =
0.99833416646828
0.99998333341667
0.99999983333334
0.99999999833333
0.99999999998333

Birinciden beşinciye kadar olan b değerlerinin hiçbiri istenen sonucu vermez.
sonuç, 1, 15 ondalık basamak doğrulukla. Çıktıya bakılırsa, umut edilebilir
sinelimit A0) komutunu girerek daha önce sorulan sorunun cevabını bulun.
Dene!

Bu nedenle, yukarıdan, çok fazla görüntülemeniz gerektiği sonucuna varabiliriz. ek bilgi ve alternatifler!

Grafik nesnesi özellikleri referansı

Standart iletişim kutuları.

İletişim kutuları oluşturma işlevleri

MATLAB, standart iletişim kutuları oluşturmak için 15 fonksiyon tanımlar. İletişim kutularının görünümü, bu işlevlerin giriş argümanları belirtilerek özelleştirilebilir. Aşağıda iletişim kutusu örnekleri ve amaçlarına karşılık gelen işlevlerin adları verilmiştir.

Mesaj iletişim kutuları:

errordlg - Hata mesajı içeren bir iletişim kutusu oluşturur;

helpdlg - bilgileri görüntülemek için bir iletişim kutusu oluşturun;

warndlg - Bir uyarı iletişim kutusu oluşturur;

msgbox - bir mesajı görüntülemek için bir iletişim kutusu oluşturun.

Onay iletişim kutusu(questdlg işlevi)

Bilgi girmek için iletişim kutusu(inputdlg işlevi)

Listeden seçim için iletişim kutusu(listdlg işlevi)

Yazdırma seçeneklerini ayarlamak için iletişim kutuları

pagesetupdlg - sayfa parametrelerinin ayarlanması ve grafik penceresinin içeriğinin nasıl yazdırılacağı için çok sayfalı bir iletişim kutusu görüntüler;

printdlg - yazdırma seçeneklerini ve yazıcı ayarlarını seçmek için bir iletişim kutusu görüntüler.

Dosya açma ve kaydetme iletişim kutuları

uigetfile - bir dosya açma iletişim kutusu görüntüler

uiputfile - dosya kaydetme iletişim kutusunu görüntüler

Dizin seçimi iletişim kutusu(uigetdir işlevi)

Yazı tipi seçimi iletişim kutusu(uisetfont işlevi)

Renk seçimi iletişim kutusu(uisetcolor işlevi)

İlerleme çubuğu(bekleme çubuğu işlevi)

Listelenen işlevlere ek olarak, boş bir grafik penceresi oluşturmak için tasarlanmış bir diyalog işlevi vardır. Bu grafik penceresinin özellikleri, diyalog fonksiyonuna giriş argümanları kullanılarak ayarlanabilir.

Dosya açma penceresi örneğini kullanarak standart iletişim kutularının kullanımını ele alalım.

Dosya açma iletişim kutusuyla örnek myview uygulaması

ile myview uygulamasını oluşturalım. grafik arayüzü grafik dosyalarını görüntülemenizi sağlayan kullanıcı. Çalışan uygulama penceresi Şekil 2'de gösterilmektedir. 1. Görüntüyü Aç düğmesine basmak, standart Açılacak Dosyayı Seç iletişim kutusunu getirir. Seçilen grafik dosyası uygulama penceresinde görüntülenir. Görüntüyü Kapat düğmesine tıklamak, myview uygulama penceresini temizler.

Pirinç. 1. Uygulama penceresi görünümüm.

GUIDE ortamında, boş uygulama penceresinde, Şekil 2'de gösterildiği gibi eksenleri ve iki düğmeyi yerleştirin. Özellik denetçisinde, sol düğmeyi btnOpen ile etiketleyin ve String özelliğini Open Image olarak ayarlayın. Aynı şekilde sağ düğme için: tag - btnClose ve String - Close Image.

Görüntü işlevini kullanarak görüntüyü görüntülemek için eksenlere ihtiyaç vardır. Eksenin ters yönünü varsayan görüntü işlevine düşük seviyeli bir çağrı kullanacağız. y Böylece çizim baş aşağı olmaz. Yani özellik denetçisinde eksenin yönünü değiştirin y YDir eksenleri özelliğini ters olarak ayarlayarak. Kılavuz çizgilerini ve eksen çizgilerini gizlemek için, Görünür özelliklerini kapalı olarak ayarlayarak eksenleri görünmez yapın.

Pirinç. 2. GUIDE ortamında uygulama penceresinin hazırlanması.

Uygulamayı benim görünümüm olarak kaydedin ve Görüntüyü Aç ve Görüntüyü Kapat düğmeleri için Geri Arama olaylarını programlayın.

Kullanıcı Resmi Aç'a tıkladığında, bir dosya açma iletişim kutusu görünmeli ve bir dosya seçtikten sonra, resim eksenlerde görüntülenmelidir. uigetfile işlevi tarafından oluşturulan standart dosya aç iletişim kutusunu kullanalım. Buna en basit referans aşağıdaki gibidir:

Uiget dosyası

Kullanıcı bir dosya seçtiyse ve içindeki Aç düğmesini tıklatarak pencereyi kapattıysa, ilk çıktı bağımsız değişkeni DosyaAdı dosya adını (uzantısıyla birlikte) ve ikinci YolAdı dosyanın yolunu döndürür. Kullanıcı dosyayı seçmediyse (İptal'i tıklattıysa veya pencereyi pencere başlığında çarpı işareti olan bir düğmeyle kapattıysa veya ), o zaman DosyaAdı değişkeni sıfıra eşit olacaktır. Bu yüzden daha fazla eylemler DosyaAdı değerine bağlıdır.

Dosya seçildiyse,

1) dosyanın tam adını oluşturun;

3) görüntü işlevini kullanarak görüntüyü eksende görüntüleyin.

Dosya seçilmediyse, herhangi bir şey yapmanıza gerek yoktur.

Görüntüyü Kapat düğmesinin Geri Çağırma olayı yalnızca bir operatörden oluşabilir - eksenleri temizlemek için cla işlevine yapılan bir çağrı.

Görüntüyü Aç ve Görüntüyü Kapat düğmelerinin Geri Çağırma olayı alt işlevlerini aşağıdaki gibi programlayın.

İşlev btnOpen_Callback (hObject, eventdata, tanıtıcılar)% Resmi Aç düğmesinin Geri Çağırma olayını işle% Dosyanın adını ve yolunu alın = uigetfile; % Dosyanın seçili olup olmadığının kontrol edilmesi DosyaAdı ~ = %0 Dosyanın tam yolunun oluşturulması FullName =; % Bir grafik dosyasından resim okuma Pict = imread (FullName); % Görüntünün görüntü ekseninde görüntülenmesi ("CData", Pict) bitiş işlevi btnClose_Callback (hObject, eventdata, tanıtıcılar)% Görüntüyü Kapat düğmesinin Geri Çağırma olayını işlemek% cla eksenlerini temizleme

myview uygulamasını başlatın. Görüntüyü Aç düğmesini tıklattığınızda, Açılacak Dosyayı Seç iletişim kutusu görüntülenir. Ancak, geçerli klasörün içeriğini görüntüleyen alanda grafik dosyaları görünmez. Bunun nedeni, varsayılan olarak dosya filtresinin (Dosya türü açılır listesi) "Tüm MATLAB Dosyaları" dizesini içermesi ve yalnızca MATLAB tarafından kabul edilen uzantılara sahip dosyaların görünür olmasıdır. Elbette, bir grafik dosyasını her açtığınızda, geçerli klasördeki tüm dosyaları görüntülemek için Dosya türü açılır listesinden "Tüm Dosyalar (*. *)" satırını seçin. Ancak hemen şu şekilde yapılandırılmış bir dosya açma iletişim kutusu oluşturmak çok daha iyidir. belirli uzantılar... Örneğin, bmp ve jpg uzantılı dosyaları görüntülemek için, bir giriş bağımsız değişkeni olan uigetfile işlevine bakın - gerekli * .bmp ve * .jpg uzantılarına sahip şablonların noktalı virgülle ayrılarak yazıldığı bir dize:

Uigetfile ("*.Bmp; *.Jpg");

btnOpen_Callback alt işlevindeki uigetfile çağrısını yukarıdakiyle değiştirin ve dosya açma iletişim kutusunun Dosya türü açılır listesinin yalnızca iki satır içerdiğinden emin olun: "* .bmp; *. Jpg" (varsayılan) ve "Tüm Dosyalar" (*. *)".

uigetfile işlevi, dosya filtresi ayarları üzerinde daha esnek kontrol sağlar. Standart iletişim kutuları oluşturmak için işlevlerin açıklamasına ayrılmış bölümde bunlara bakacağız. Şimdi standart dosya açma iletişim kutusunda aynı anda birden çok dosya seçme yeteneğinin nasıl uygulanacağını tartışalım.

Dosya aç iletişim kutusunda birden çok dosya seçin. Bir GUI uygulamasının alt işlevleri arasında veri alışverişi.

Bu bölümde iki soruya bakacağız:

1) standart dosya açma penceresinde birkaç dosyanın seçiminin nasıl organize edileceği ve içeriklerinin uygun bir dizide nasıl okunacağı;

İlk sorunun cevabı basit. uigetfile işlevini, "MultiSelect" ve "on" ek girdi bağımsız değişkenleri çiftiyle çağırmak gerekir:

Uigetfile (..., "MultiSelect", "on")

Kullanıcının seçimine bağlı olarak, çıktı argümanları aşağıdaki tiplerden olacaktır.

  • Kullanıcı, dosya açma iletişim kutusunda birden fazla dosya seçtiyse (fareyle seçerek veya tıklayıp basılı tutarak) veya ), ardından DosyaAdı, her hücrenin dosya adını (ve uzantısını) içeren bir satır içeren bir hücre dizisi olur ve YolAdı bu dosyaların yolunu içeren bir satır olur (tüm dosyaların yolu aynıdır, bu nedenle YolAdı hücre dizisi olmamalıdır).
  • Kullanıcı dosya açma iletişim kutusunda bir dosya seçtiyse, DosyaAdı dosya adını içeren bir satır (uzantılı) ve YolAdı dosya yolunu içeren bir satır olacaktır (önceki bölüme bakın).
  • Seçim yapılmadıysa, DosyaAdı sıfırdır.

İkinci soru (olay işleme alt işlevleri arasındaki iletişim) genellikle GUI uygulamalarını programlarken ortaya çıkar. Aşağıdaki gibi çözülür. Bazı alt işlevler yürütülürken kaydedilmesi gereken veriler, tanıtıcı yapısının alanlarına yazılır. Daha sonra, aynı alt işlevde, tutamaç yapısı guidata işlevi kullanılarak kaydedilir:

kılavuz veriler (gcbo, tutamaçlar)

Başka bir alt işlevde veri almak için, tutamaç yapısının ilgili alanına bakın. Örneğin, uygulamanın btnA_Callback ve btnB_Callback olmak üzere iki alt işlevi vardır. btnA_Callback alt işlevi yürütülürken, btnB_Callback alt işlevinde ihtiyaç duyulacak sayısal bir dizi oluşturuldu. O halde bu alt fonksiyonlar aşağıdaki gibi olmalıdır.

btnA_Callback işlevi (hObject, eventdata, tanıtıcılar). ... ... kolları.veri =; kılavuz veriler (gcbo, tutamaçlar). ... ... btnB_Callback işlevi (hObject, eventdata, tanıtıcılar). ... ... çubuk (handles.data). ... ...

Bir önceki bölümde oluşturulan myview uygulamasına bir göz atalım ve yeteneklerini genişletelim. Modernize edilmiş uygulama, aynı anda birkaç grafik dosyasının açılmasına ve tek tek görüntülenmesine izin vermelidir. Uygulama penceresinde birkaç grafik dosyası seçtikten sonra, yalnızca bir tanesi görüntülenir ve düğmesine tıklandığında (ileri diyelim) bir sonraki görüntünün görünümüne yol açar.

GUIDE ortamında, myview uygulama penceresi şablonunun yanında btnNext etiketi ve yanında yazı bulunan bir düğme ekleyin (bkz. önceki bölümün Şekil 2'si) (bkz. Şekil 1). Özellik denetçisinde, Etkinleştir özelliğini kapalı olarak ayarlayarak bunu kullanılamaz hale getirin. Kullanıcı görüntülemek için birkaç grafik dosyası seçtiyse, uygulama çalışırken kullanılabilir olacaktır.

Pirinç. 1. İleri düğmesi ile Myview uygulama penceresi

Şimdi, Open Image düğmesinin Callback olayını işlemenin btnOpen_Callback alt işlevini değiştirmeniz ve Next düğmesinin Callback olayını programlamanız gerekir. Dosya açma iletişim kutusunda kullanıcı tarafından dosya (veya bir dosya) seçimini işlerken, tüm olasılıkları göz önünde bulundurmalısınız: birkaç dosya seçilir, yalnızca bir dosya seçilir, hiçbir dosya seçilmez.

Birkaç grafik dosyası seçilirse (yani, DosyaAdı dizisi bir hücre dizisidir), o zaman görüntüleri bir hücre dizisine okur ve tutamaç yapısının Pict alanına kaydederiz. Açık grafik dosyalarının sayısı (yani DosyaAdı dizisinin uzunluğu), tutamaç yapısının ImageNum alanına kaydedilecektir. Ayrıca, tutamaç yapısının CurImage alanını oluşturacağımızı hatırlamak için mevcut görüntünün numarasına ihtiyacımız var.

Dosyaları açtıktan sonra ilkinin içeriğini uygulama penceresinde görüntüleyeceğiz. Birden fazla dosya açılmışsa, İleri düğmesini kullanılabilir hale getireceğiz ve yalnızca bir tane varsa, İleri'yi kullanılamaz hale getireceğiz.

Next düğmesinin Callback olayını işlerken, eksenleri temizleyin ve üzerlerinde aşağıdaki görüntüyü görüntüleyin. Geçerli görüntü sonuncusuysa, ilki görüntülenecektir.

Aşağıda btnOpen_Callback ve btnNext_Callback alt işlevlerinin metni bulunmaktadır. btnClose_Callback alt işlevi değişmeden kalır.

İşlev btnOpen_Callback (hObject, eventdata, tanıtıcılar)% Resmi Aç düğmesinin Geri Çağırma olayını işle% Dosya adlarını ve bunlara giden yolları (veya bir dosya adı ve yolu) alın = uigetfile ("*. Bmp; *. Jpg", "MultiSelect", "açık"); % iscell (DosyaAdı)% DosyaAdı bir hücre dizisi ise, kaç dosyanın seçildiğini öğreniriz, bu nedenle birkaç dosya seçilmiştir% tutamaç yapısının ImageNum alanına seçilen dosyaların sayısını yazın tutamaçlar.ImageNum = uzunluk ( Dosya adı); % Döngüdeki her dosya için, % tam adını oluşturun ve içeriğini, tutamaç yapısının Pict alanında saklanan hücre dizisinin k-inci hücresine % okuyun.Pict =; % önce diziyi k = 1 için boş yaparız: handles.ImageNum FullName =; handles.Pict (k) = imread (FullName); end% İlk resim şu anki olanıdır.CurImage = 1; % Eksen görüntüsünde gösteriyoruz ("CData", handles.Pict (handles.CurImage))% BtnNext_Callback guidata alt işlevinde (gcbo, handles) erişmek için tanıtıcı yapısını kaydedin (gcbo, tanıtıcılar)% Sonraki düğmesini kullanılabilir küme yapın (tutamaçlar. btnNext, "Enable "," on ") else% Yalnızca bir dosya seçildi veya DosyaAdı ~ = 0% ise hiçbiri yok Bir dosya seçildi, bunun tam yolunu oluşturuyoruz FullName =; % Resmi Pict değişkenine okuyoruz (tutamaç yapısına gerek yok) Pict = imread (FullName); % Görüntüyü görüntü ("CData", Pict) ekseninde göster% Sonraki düğmesini kullanılamaz olarak ayarla (handles.btnNext, "Etkinleştir", "kapalı") bitiş bitiş işlevi btnNext_Callback (hObject, eventdata, tanıtıcılar)% Geri Aramayı Yönet Open Image düğmesinin olayı % Hands.CurImage ise hangi resmin geçerli olduğunu kontrol etme

Not

Myview uygulaması daha da geliştirilebilir, örneğin dosyaları seçtikten sonra ve ilkini görüntülemeden önce eksenleri temizlemek iyi bir fikirdir. Kullanıcının grafik olmayan dosyaları seçtiği de dikkate alınmalıdır.

İletişim kutuları oluşturmaya yönelik işlevler için başvuru.

Bir hata iletişim kutusu oluşturun - errordlg

errordlg işlevi, standart bir hata iletişim kutusu oluşturmak için kullanılır. En yaygın arama seçeneği

h = errordlg ("Mesaj metni", "Pencere başlığı").

H, bir hata mesajı ile oluşturulan grafik penceresine bir işaretçi depolar. Örneğin

h = errordlg ("Sıfıra bölme", ​​"Hesap Makinesi");

h işaretçisiyle aşağıdaki gibi bir pencereye yönlendirir:

Pencere, Tamam düğmesi, tuşu, başlığın üzerinde çarpı bulunan düğme veya başlık bağlam menüsü kullanılarak kapatılana kadar ekranda kalır.

Hata mesajı penceresi kalıcı değildir (diğer MATLAB uygulama pencerelerine gitmenizi sağlar). Kalıcı hale getirmek için, errordlg işlevini kullanarak bir pencere oluşturduktan sonra, grafik penceresinin WindowStyle özelliğini "modal" olarak ayarlayın: set (h, "WindowStyle", "modal")

Kalıcı bir hata mesajı kutusu oluşturmanın başka bir yolu, aşağıda açıklanan msgbox işlevini kullanmaktır.

Pencerenin boyutu, metin satırlarının uzunluğuna bağlı olarak otomatik olarak seçilir, çok uzun satırlar sarılır. Belirtilen şekilde satırlara bölünmüş çok satırlı bir mesaj almak için, bir dizi hücre dizisi belirtmelisiniz:

h = errordlg ("Yanlış veri formatı"; "veya"; "eşleşmeyen veri"), "dlgname")

Aynı başlığa sahip hata mesajlarıyla ardışık pencere oluşturma:

h = errordlg ("Sıfıra bölme", ​​"Hesap Makinesi"); ... h = errordlg ("Yanlış işlem", "Hesap makinesi");

hata mesajları ile farklı pencerelerle sonuçlanır. Bir pencereyi etkinleştirmek (diğer pencerelerin üstünde konum) ve içinde yeni bir mesaj görüntülemek için, yeni bir pencere oluşturmak yerine, "on" üçüncü argümanı ile errordlg çağrısı sağlanır:

h = errordlg ("Sıfıra bölme", ​​"Hesap Makinesi"); ... h = errordlg ("Yanlış işlem", "Hesap makinesi", "açık"); eski pencerenin % aktivasyonu

Tabii ki, eski pencere kapatılmışsa, o zaman h = errordlg (..., "on") sadece yeni bir tane oluşturur.

Hata mesajı içeren bir iletişim kutusu görüntülendikten sonra uygulama çalışmaya devam eder. Soru genellikle ortaya çıkar: iletişim kutusu kapanana kadar yürütmenin nasıl duraklatılacağı. Bu, belirli bir grafik nesnesi kaldırılana kadar uygulamanın yürütülmesini duraklatan waitfor işlevi kullanılarak yapılır. Bu nesneye bir işaretçi (bizim durumumuzda bir hata mesajı penceresi), waitfor işlevine giriş argümanı olarak belirtilir:

h = errordlg ("Sıfıra bölme", ​​"Hesap Makinesi"); set (h, "WindowStyle", "modal") waitfor (h) a = 1; ....

Bir uyarı iletişim kutusu oluşturun - warndlg

warndlg işlevi errordlg işleviyle hemen hemen aynı şekilde çalışır (yukarıya bakın), ancak onu üçüncü bir girdi bağımsız değişkeni "on" ile çağırma seçeneği yoktur. Örneğin,

h işaretçisiyle böyle bir pencereyle sonuçlanır

Uyarı penceresi, hata mesajı penceresinden yalnızca şu simgeyle farklılık gösterir:

Warndlg'yi aynı girdi argümanlarıyla yeniden çağırmak, eski pencere henüz kapatılmamış olsa bile yeni bir pencere oluşturur.

Yardım iletişim kutusu oluştur - helpdlg

helpdlg işlevi, warndlg ile hemen hemen aynı şekilde çalışır (yukarıya bakın). Örneğin,

h = warndlg ("Dosya güncel değil", "Ön İşlemci")

h işaretçisi ile bunun gibi bir pencereyle sonuçlanır:

uyarı penceresinden yalnızca piktogram ile farklılık gösteren:

Aynı pencere başlığıyla helpdlg'yi tekrar çağırmak, kapatılmamışsa eski pencereyi etkinleştirecektir. Kapatıldıysa, yenisi oluşturulur.

Birden çok mesaj metni satırı, pencere modalitesi ve pencere kapanana kadar uygulama yürütmesinin askıya alınması, tümü errordlg çağrılırken olduğu gibi yapılır.

Mesaj kutusu oluştur - genel mesaj kutusu işlevi

msgbox işlevi, yukarıda tartışılan hata, uyarı ve yardım pencerelerini oluşturmanıza izin verir. Çok satırlı metin elde etmek için, ilk argüman olarak bir hücre dizisi dizisini belirtmelisiniz. Ayrıca, isteğe bağlı bir simgeye sahip bir pencere oluşturmak da mümkündür. Pencerenin modalitesini kontrol etmek ve aynı başlıkta yeni bir tane oluşturmak, msgbox giriş argümanları kullanılarak yapılır. msgbox işlevi, oluşturduğu pencereye bir işaretçi döndürür.

h = msgbox ("Çok ciddi hata!", "Program", "hata")- bir hata mesajı ve standart bir simge içeren bir pencere oluşturur (errordlg'ye benzer).

c = ("Çok ciddi bir hata!"; "Kimseye söyleme"); h = msgbox (c, "Program", "hata")- öncekine benzer, ancak mesaj iki satırdan oluşuyor.

h = msgbox ("Son uyarı!", "Program", "uyar")- bir uyarı ve standart bir simge içeren bir pencere oluşturur (warndlg'ye benzer).

h = msgbox ("Kendinize yardım edin ...", "Program", "yardım")- yardım bilgileri ve standart bir simge içeren bir pencere oluşturur (helpdlg'ye benzer).

h = msgbox ("Burada resim yok", "Program", "hiçbiri")- simge içermeyen metin bilgileri içeren bir pencere oluşturur.

h = msgbox ("Mesaj metni", "Pencere başlığı", "özel", resim, renk haritası)- örneğin bir kullanıcı simgesi olan bir pencere oluşturur:

= imread ("telefon.gif"); h = msgbox dosyasından resim ve renkli harita okuma yüzdesi ("Birisi sizi arıyor", "Telefon", "özel", resim, harita)

böyle bir pencereyle sonuçlanır

Son girdi argümanı ("modal", "modal olmayan" veya "değiştir"), pencerenin görünümünü ve aynı başlığa sahip yeni bir pencerenin nasıl görüntüleneceğini kontrol eder. Yeni bir pencere görüntüleme yöntemi belirtilmemişse, her zaman yeni bir pencere oluşturulur.

Örnekler:

h = msgbox ("Çok ciddi hata!", "Program", "modal")- bir hata mesajı ile kalıcı bir standart pencere görüntüler

h = msgbox ("Birisi sizi arıyor", "Telefon", "özel", resim, harita, "modal")- piktogram ve renk haritası için belirli bir resim içeren kalıcı bir pencere görüntüler.

h = msgbox ("Çok ciddi hata!", "Program", "hata", "değiştir")- önceki pencereyi Program başlığıyla değiştirir, yoksa yeni bir tane oluşturur. Komutları yürütürken

h = msgbox ("Çok ciddi hata!", "Program", "hata") h = msgbox ("Garip bir şey", "Program", "uyar", "değiştir")

ikinci pencere ilkinin yerini alacak.

Onay iletişim kutusu - questdlg işlevi

questdlg işlevi, birden çok düğmeli kalıcı bir onay iletişim kutusu oluşturur. Bir pencere oluştururken, düğmelerden herhangi birinin odağı olabilir. Çıkış bağımsız değişkeninde, questdlg işlevi, kullanıcının seçimini (basılan düğmenin adını içeren bir dize) veya pencere herhangi bir düğme tıklanmadan kapatılmışsa boş bir dize döndürür. Çok satırlı metin almak için bir hücre dizisi dizisini kullanın. Uzun bir satır belirtilirse, otomatik olarak sarılır.

Örnekler:

button = questdlg ("Emin misiniz?")- Evet, Hayır, İptal düğmeleriyle standart bir onay penceresinin oluşturulması. Evet düğmesi odakta (varsayılan).

button = questdlg ("Emin misiniz?", "Program")- bir başlık ve Evet, Hayır, İptal düğmeleri ile standart bir onay penceresinin oluşturulması.

button = questdlg ("Emin misiniz?", "Program", "Hayır")- bir başlık ve Evet, Hayır, İptal düğmeleri ile standart bir onay penceresinin oluşturulması. Odak, Hayır düğmesi üzerindedir.

button = questdlg ("Emin misiniz?", "Program", "Evet", "Belki", "Belki")- bir başlık ve Evet ve Belki iki düğmeli standart bir onay penceresi oluşturma. Odak, Belki düğmesindedir.

button = questdlg ("Emin misiniz?", "Program", "Evet", "Hayır", "Bilmiyorum" "bilmiyorum", "Hayır")- bir başlık ve Evet, Hayır ve Bilmiyorum üç düğmeli standart bir onay penceresinin oluşturulması. Odak, Hayır düğmesi üzerindedir.

Bilgi girmek için iletişim kutusu (inputdlg işlevi)

inputdlg işlevi, belirtilen sayıda giriş satırı içeren bir iletişim kutusu oluşturur. Giriş satırlarının sayısı ve başlıkları, giriş argümanları kullanılarak belirlenir. Pencere, Tamam ve İptal düğmelerini içerir. Kullanıcı Tamam'ı tıklarsa, inputdlg işlevinin çıkış argümanı, kullanıcı tarafından giriş satırlarına girilen bilgileri içeren bir hücre dizisidir. Pencere, İptal düğmesi tıklanarak veya başka bir şekilde (Tamam düğmesi dışında) kapatılmışsa, çıktı bağımsız değişkeni boş bir hücre dizisidir.

Örnekler:

M = inputdlg (("ZAMAN" "DEĞERLER"))- bir iletişim kutusu oluşturur

Örneğin, ZAMAN satırında kullanıcı 0,1 0,3 0,55 4,5 ve DEĞERLER satırında - 2,3 9,55 2,1 0,7 girdiyse ve Tamam'ı tıkladıysa, M hücre dizisi aşağıdaki değerlere sahip olacaktır.

M = "0,1 0,3 0,55 4,5" "-2,3 9,55 2,1 0,7"

Bunları sayısal vektörlere dönüştürmek için str2num'u kullanabilirsiniz:

zaman = str2num (M (1)) val = str2num (M (2))

M = inputdlg ("ZAMAN" "DEĞERLER"), "Giriş Verileri") - Giriş Verileri başlıklı bir iletişim kutusu oluşturur.

Çok satırlı metin girebilmek için, üçüncü girdi bağımsız değişkenini - her bir girdi alanındaki satır sayısını belirtmelisiniz:

M = inputdlg (("matris A" "Matris B"), "Giriş Verileri", 3)- üçüncü bağımsız değişken birden büyük bir sayıysa, tüm girdi alanları aynı yüksekliğe ve kaydırma çubuklarına sahiptir.

Giriş, OK düğmesine tıklanarak tamamlanırsa, M dizisinin her hücresi bir dizi karakter içerir. Karakter dizisi, karşılık gelen giriş alanına girilen sayıda satır içerir.

M = inputdlg (("vektör A" "Matris B"), "Giriş Verileri",)- giriş alanlarının yüksekliğini ayrı ayrı ayarlamak için, sütun vektöründeki her giriş alanının satır sayısını üçüncü giriş argümanı olarak belirtmelisiniz:

M = inputdlg (("vektör A" "Matris B"), "Giriş Verileri",)- girdi alanlarının uzunluğunu karakter olarak ayarlamak için (bu durumda 100 karakter), üçüncü girdi bağımsız değişkeni bir matris olmalıdır:

M = inputdlg (("Ad" "Yıl"), "Bilgi", (char ("John", "Smith") "1990")- doldurulmuş alanlar içeren bir pencere elde etmek için (kullanıcıya giriş biçimini sormak için), dördüncü giriş bağımsız değişkenini belirtin. İlk giriş argümanıyla aynı boyutta bir hücre dizisi olmalıdır:

M = inputdlg (("Ad" "Yıl"), "Bilgi", (char ("John", "Smith") "1990"), "on")- son beşinci giriş argümanı "açık", kullanıcının iletişim kutusunu yeniden boyutlandırabileceği anlamına gelir.

Listeden seçim yapmak için iletişim kutusu - listdlg işlevi

listdlg işlevi, seçim ve seçimi kaldırma için belirtilen dizeler ve düğmelerden bir liste kutusu içeren bir iletişim kutusu oluşturur. Liste satırları bir dizi hücre tarafından belirtilir. Liste öğelerinin çoklu seçimi desteklenir. Çıktı bağımsız değişkenlerinde aşağıdakiler döndürülür: Seçim - seçilen satırların ve ok'un numaralarını içeren bir sayı veya vektör - seçimin Tamam düğmesine (tamam = 1) basılarak tamamlanıp tamamlanmadığı veya pencerenin başka bir pencerede kapatılıp kapatılmadığı hakkında bilgi yol (tamam = 0). Tamam = 0 ise, Seçim boş bir dizidir. Varsayılan olarak, birkaç liste öğesi seçilebilir (Ctrl'yi basılı tutarken fareyle tıklayarak) ve tüm öğeleri seçmek için bir Tümünü Seç düğmesi vardır.

= listdlg ("ListString", ("Doğrusal"; "Kuadratik"; "Kübik"))- üç satırlık bir liste içeren bir seçim diyalogu oluşturur: Doğrusal, Kuadratik, Kübik. Kullanıcı örneğin Kuadratik'i seçip Tamam düğmesine bastıysa, Seçim = 2 ve tamam = 1. Kullanıcı Doğrusal ve Kübik'i seçip Tamam düğmesine bastıysa, Seçim = ve tamam = 1, vb.

listdlg işlevine genel biçimde erişilebilir:

= listdlg ("ListString", dizelerin hücre dizisi, param1, val1, param2, val2, ...)

Parametreler ve olası değerleri aşağıdaki gibidir:

  • "SelectionMode" - listedeki satırları seçme modu, değerler: "single" (yalnızca bir satır seçmek için) veya "multiple" (varsayılan olarak, birden çok satır seçmek için);
  • "ListSize" - liste alanının piksel cinsinden boyutu, değer [width-height] vektörü tarafından belirlenir (varsayılan olarak);
  • "InitialValue" - satırların ilk seçimi, değer, liste kutusu görüntülendiğinde seçilecek satır numaralarına sahip bir vektördür (varsayılan olarak 1);
  • "Ad" - pencerenin başlığı, değer bir dize ile belirlenir (varsayılan olarak boş bir dize);
  • "PromptString" - listenin üstündeki metin, değerler: dize veya dize dizisi veya dizelerden hücreler (çok satırlı metin için). Varsayılan, boş bir hücre dizisidir.
  • "OKString" - pencereyi seçmek ve kapatmak için düğmedeki bir yazı, değer bir dizedir (varsayılan olarak "OK");
  • "CancelString" - pencereyi seçim yapmadan kapatmak için düğmedeki bir yazı, değer bir dizedir (varsayılan olarak "İptal");
  • "uh" - pencere düğmelerinin yüksekliği, değer piksel olarak ayarlanır (varsayılan olarak 18);
  • "fus" - düğmeler ve liste arasındaki mesafe, değer piksel olarak ayarlanır (varsayılan olarak 18);
  • "ffs", pencere sınırından listeye olan mesafedir, değer piksel (varsayılan olarak 8) olarak ayarlanır.
Örneğin, komut

= listdlg ("ListString", ("Linear"; "Quadratic"; "Kübik"), ... "Ad", "Yaklaşıklık", "ListSize", "PromptString", "Yöntem seç", "fus", 5)

aşağıdaki birleşik giriş kutusu iletişim kutusunun oluşturulmasıyla sonuçlanır:

Sayfa parametrelerinin ayarlanması ve grafik penceresinin içeriğinin nasıl yazdırılacağı için iletişim kutusu - pagesetupdlg işlevi

pagesetupdlg - geçerli grafik penceresi için Sayfa Yapısı iletişim kutusunun çağrılması (pencere yoksa, yeni bir pencere oluşturulur).

pagesetupdlg (hF) - hF işaretçisi ile grafik penceresi için Sayfa Yapısı iletişim kutusunu çağırır.

Sayfa Yapısı iletişim kutusunda yapılan ayarlar, grafik penceresinin ilgili özelliklerini etkiler: PaperSize, PaperType, PaperPozition, vb.

pagesetupdlg işlevi, yalnızca bir grafik penceresinin parametrelerini yapılandırmanıza izin verir, yani. hF bir işaretçi vektörü olamaz. Birkaç grafik penceresinin ana parametrelerini aynı anda yapılandırmak için, giriş argümanı grafik pencerelerine yönelik bir işaretçi vektörü olabilen pagedlg işlevini kullanın.

Sayfa Yapısı penceresi kalıcıdır; pencere kapatılana kadar uygulama yürütmesi duraklatılır.

Yazdırma seçeneklerini seçmek ve yazıcıyı kurmak için iletişim kutusu - printdlg işlevi

printdlg - geçerli grafik penceresini yazdırmak için standart Windows iletişim kutusunu çağırın (pencere yoksa yenisi oluşturulur).

printdlg (hF) - hF işaretçisi ile bir grafik penceresi yazdırmak için standart Windows iletişim kutusunu çağırır.

printdlg ("- crossplatform", hF) - Bir hF işaretçisi ile bir grafik penceresi yazdırmak için MATLAB Yazdır iletişim kutusunu çağırır.

Yazdır iletişim kutusu kalıcıdır, uygulama pencere kapatılana kadar duraklatılır.

Dosya açma iletişim kutusu - uigetfile işlevi

= uiget dosyası- geçerli dizinin içeriğine sahip bir dosyayı açmak için bir iletişim kutusu görüntüler. Dosya filtresi TÜM MATLAB dosyalarına ayarlanır, bu da yalnızca MATLAB'ın desteklediği uzantılara sahip dosyaların görüntülenmesine neden olur. Dosya türü açılır listesinde, yalnızca M dosyalarını veya yalnızca grafik pencerelerini vb. veya tüm dosyaları seçebilirsiniz.

Kullanıcı bir dosya seçtiyse (dosya simgesine tıklayıp Aç düğmesine bastıysa veya dosya simgesine çift tıklayarak ya da Dosya Adı satırına dosya adını yazıp Aç düğmesine bastıysa), FName bir dosya adı ve uzantısı ile satır ve PName dosyanın yoludur. Kullanıcı dosyayı seçmediyse ve pencereyi kapattıysa, FName = 0 ve PName = 0 olur. uigetfile işlevini çağırdıktan sonra, dosyanın seçili olup olmadığını kontrol edin. Öyleyse, tam dosya adını almak için bu satırları birleştirin:

= uiget dosyası; if ~ iseeşit (FName, 0) FullName = strcat (PName, FName); % dosya sonundan daha fazla veri oku

Dosya filtresi uigetfile işlevinin ilk girdi bağımsız değişkeninde belirtilen, örneğin

= uigetfile ("*.txt");

Dosya Türü listesi iki dize içeren bir dosya açma iletişim kutusu oluşturur: "* .txt" ve "Tüm Dosyalar (*. *)". Birden fazla uzantı belirtebilirsiniz, ancak daha sonra dizelerden bir dizi hücre kullanmanız gerekir:

= uigetfile(("*.txt"; "* .dat"));

Dosya türlerinin açıklamalarını Dosya Türü listesine yerleştirmek için iki sütunlu bir hücre dizisi belirtmelisiniz. Her satırda dosya uzantısı ve açıklama bulunur ("Tüm Dosyalar (*. *)" satırı, dosya açma iletişim kutusunun Dosya Türü listesine eklenmezken):

Filtre = ("*. Txt", "Metin dosyaları (* .txt)"; "* .dat", "Veri dosyaları (* .dat)"; "* .res", "Sonuçlar (* .res)") ; = uigetfile (Filtre);

Bir filtre olarak, dosya adına sahip bir dize de olabilir, o zaman dosya aç iletişim kutusu göründüğünde Dosya adı satırındadır ve uzantısı varsayılan uzantı olarak alınır ve Dosya Türü listesinde birlikte görünür. "Tüm Dosyalar (*. *)".

Kullanıcının Dosya Türü listesinde hangi tür dosyaları seçtiğini öğrenmeniz gerekiyorsa, üç çıktı bağımsız değişkeniyle uigetfile öğesine başvurmalısınız:

= uigetfile (Filtre);

FilterIndex, dosya türü numarasını kaydeder.

ödev için kendi pencere başlığı bir dosya açarken (Açılacak Dosyayı Seç yerine), uigetfile işlevi ikinci giriş argümanıyla çağrılır:

= uigetfile (Filtre, "Dosyayı Aç");

Ve bir dosya açık penceresi oluştururken belirtilen dosya adını Dosya Adı satırına koymak için, bunu üçüncü girdi bağımsız değişkeninde belirtmelisiniz (dosya adı tam olabilir):

= uigetfile (Filtre, "Dosya Aç", "input.txt")

D sürücüsünün kök dizini gibi herhangi bir klasörün içeriğini şu şekilde görüntüleyebilirsiniz:

= uigetfile (Filtre, "Dosya Aç", "d: \")

Not
MATLAB dosyalarını varsayılan uigetfile'ın önerdiği gibi açmak istiyorsak, ancak kendi pencere başlığımızı (ve dosya açma iletişim kutusundaki varsayılan klasör veya dosyayı) ayarlamak istiyorsak, o zaman ilk girdi argümanı olan filtre atlanamaz. Boş bir satır olmalıdır:

= uigetfile ("", "Dosya Aç", "d: \");

Kullanıcının yapabilmesi için birden fazla dosya seç uigetfile öğesini aşağıdaki yollardan biriyle aramalısınız:

= uigetfile ("MultiSelect", "açık"); veya = uigetfile ("*. dat", "MultiSelect", "açık"); veya = uigetfile ("*. dat", "Dosya Aç", "d: \", "MultiSelect", "açık")

Kullanıcı iletişim kutusunda birden çok dosya seçtiyse, FName çıktı bağımsız değişkeni seçilen dosyaların adlarının bir hücre dizisidir (PName, dosyalar aynı klasörde seçildiğinden elbette bir dize olarak kalır). Tam dosya adlarına sahip bir hücre dizisini elde etmek için aşağıdaki kod uygundur (strcat işlevi, bir diziyi dizilerden bir hücre dizisiyle birleştirebilir):

= uigetfile ("MultiSelect", "açık"); if ~ iseeşit (FName, 0) FullName = strcat (PName, FName); son

MATLAB işlevleri, farklı formatlardaki dosyaları açmak için

Dosyaları açmaktan bahsettiğimiz için farklı formatlardaki dosyalarla çalışmak üzere tasarlanmış ana MATLAB fonksiyonlarından bahsetmek uygun olur.

yük- bir ikili dosyadan veya metin dosyasından veri okuma.

açık- bir dosya açma. Açma yöntemi uzantıya bağlıdır:

  • uzantı m- dosya M-dosya düzenleyicisinde açılır;
  • uzantı mdl- model Simulink'te açılır;
  • uzantı mat- dosyadan yapı alanlarına ikili veri yazma, yapı alanlarının adları dosyaya kaydedilen değişkenlerin adlarıyla çakışır;
  • uzantı incir- bir grafik penceresi açılır;
  • uzantı P- aynı ada sahip bir m dosyası varsa, M dosyası düzenleyicisinde açılır;
  • genişleme html- dosya MATLAB yardım sistemi tarayıcı penceresinde açılır;
  • uzantı pdf- dosya Adobe Acrobat'ta açılır (Windows'ta ilişkilendirme ile açmanın yüklenmesini gerektirir);
Standart olmayan bir uzantıya sahip bir dosyayı açmak için, varsayılan olarak çağrılacak kendi işlevinizi yazabilirsiniz. Adı, open kelimesinden ve örneğin, dtm uzantılı dosyaları açmak için uzantısından oluşur, opendtm işlevini yazın. Örnek. Adları farklı olabilecek iki değişkenin değerlerini içeren dtm uzantılı ikili dosyaları açmanız gerektiğini varsayalım. Bu değişkenlerin değerleri çalışma ortamının zaman ve veri değişkenlerine yazılmalıdır. Ardından opendtm dosya fonksiyonunu yazıyoruz:

function opendtm (fname)% veriyi yapıya oku S = load ("- mat", fname); % yapı alanlarının adlarını öğren (değişken adları) F = alan adları (S); % Tezgah atamasının ("taban", "zaman", S. (F (1))) atamasının ("taban", "veri", S. (F (2)) zaman ve veri değişkenlerine değer atama ))

opendtm işlevini şu şekilde kullanabilirsiniz:

A = 1:10; B = kare (A); save ("my.dtm", "A", "B")% A ve B'yi ikili açık ("my.dtm") bir dosyaya yaz opendtm çağrıları ve üretim ortamında zaman ve veriler oluşturulur

Not. uiopen işlevi, uigetfile ve open özelliklerini birleştirir - bir açık dosya iletişim kutusu oluşturur ve ardından onu açmak için open çağırır.

winopen - Windows'ta bu uzantıyla ilişkili uygulamayla bir dosya açın, örneğin: winopen ("art.doc") - art.doc'u MS Word'de açın; winopen ("my.txt") - my.txt dosyasını not defterinde açma; winopen ("all.htm") - all.htm'yi web tarayıcısında açar.

not defteri- MS Word'de bir M-kitap açma veya oluşturma.

Yayınla- M dosyasının yürütülmesi, hücrelere bölünmesi ve sonucun belirtilen biçimde kaydedilmesi: html, doc, ppt, xml, rpt, lateks.

doz ve sistem- komutların yürütülmesi (ayrıca bakınız!), yürütülebilir dosyaların başlatılması, örneğin:

sistem ("hesap")- hesap makinesinin başlatılması.

uiimport- çeşitli biçimlerdeki verileri içe aktarmak için İçe Aktarma Sihirbazı penceresini açar.

ithalat verileri- dosya uzantısına bağlı olarak veri aktarımı, ayrıca sınırlandırılmış bir metin dosyasından veri okumak için de kullanışlıdır.

csvread- virgülle ayrılmış bir metin dosyasından sayısal verileri okuma.

dlmread- belirli bir sınırlayıcı ile bir metin dosyasından sayısal verileri okuma.

metin okuma, metin tarama- belirli bir formatta bir metin dosyasından veri okuma.

xlsread- MS Excel dosyalarından veri okuma.

dalga okumak- bir ses wav dosyasını okumak.

havai fişek- bir avi dosyası okuma.

gömmek- grafik dosyalarını okumak.

Listelenen işlevlere ek olarak, dosyalarla çalışmak için düşük düzeyli işlevler vardır. İsimleri f harfi ile başlar:

fclose- dosyayı kapatmak.

feof- dosyanın sonuna ulaşılıp ulaşılmadığını kontrol edin.

korku- giriş-çıkış sırasındaki son hata hakkında bilgi alma.

fgetl- satır sonu karakteri olmayan bir metin dosyasından satır okuma.

fget'lar- satır sonu karakteri olan bir metin dosyasından bir satır okuma.

fopen- bir dosya açma.

fprintf- bir dosyaya formatlanmış kayıt.

korku- ikili dosyadan okuma.

rüzgar- dosyanın başına gidin.

fscanf- bir dosyadan biçimlendirilmiş okuma.

fseek- dosyada belirli bir konuma geçiş.

ftell- dosyadaki mevcut konumu almak.

fwrite- ikili dosyaya yazma.

Veri okumak için tüm fonksiyonlar yardım başlığında listelenmiştir: MATLAB: Fonksiyonlar - Kategorik Liste: Dosya G/Ç.

Dosyayı Kaydet İletişim Kutusu - uiputfile İşlevi

uiputfile kullanımı, yukarıda tartışılan uigetfile ile benzerdir. Aynı şekilde, uzantı filtresini, pencere başlığını, dosyayı veya varsayılan yolu ayarlayabilirsiniz. Aradaki fark, uiputfile'de "MultiSelect" seçeneğinin olmamasıdır (kaydederken buna gerek yoktur). Ayrıca, kullanıcı dosyayı kaydet iletişim kutusunda mevcut bir dosya adını seçerse, bir onay penceresi görünecektir. Evet'in seçilmesi, dosya kaydetme iletişim kutusunu sonlandırır ve Hayır, dosya kaydetme penceresine döner. Kullanıcı etkinliğini kontrol etmek ve tam dosya adını almak, uigetfile ile tamamen aynıdır.

Verileri Dosyalara Kaydetmek için MATLAB İşlevleri

Çeşitli türlerdeki verileri kaydetmek için tasarlanmış ana MATLAB işlevlerini listeleyelim.

kaydetmek- metin ve ikili dosyalarda veri kaydetme

Not.
uisave işlevi, uigetfile ve save özelliklerini birleştirir - tüm ortam değişkenlerini kaydedecek bir dosya kaydetme iletişim kutusu oluşturur.

csvwrite- virgülle ayrılmış bir metin dosyasına sayısal veri yazma.

dlmyaz- belirli bir ayırıcı aracılığıyla sayısal verilerin bir metin dosyasına yazılması.

xlswrite- MS Excel formatında veri kaydı.

wavwrite- bir wav dosyası kaydetme.

avifile- bir avi dosyası oluşturur ve ona diğer işlevlerde kullanılan bir tanımlayıcı döndürür: addframe, close.

film2avi- her sütunu bir kare hakkında bilgi depolayan bir matristen bir avi dosyası oluşturma (bkz. işlevler: movie, getframe, im2frame).

yaz- bir grafik dosyası yazma.

Listelenen işlevlere ek olarak, adları f harfiyle başlayan dosyalarla çalışmak için düşük düzeyli işlevler vardır (yukarıdaki "Çeşitli Dosya Biçimlerini Açmak için MATLAB İşlevleri" bölümüne bakın).

Dizin seçimi iletişim kutusu - uigetdir işlevi

uigetdir işlevi, Klasöre gözat iletişim kutusunu açar ve seçilen dizine giden yolu veya kullanıcı bir seçim yapmadıysa sıfırı döndürür. Bir dizinin seçili olup olmadığının kontrol edilmesi, dosya açma iletişim kutusu için uigetfile işlevinde olduğu gibi yapılır. uigetdir'i çağırmanın yolları:

dname = uigetdir- geçerli MATLAB dizininin vurgulandığı dizin seçimi iletişim kutusunu açar.

dname = uigetdir ("başlangıç ​​yolu")- içinde belirtilen dizinin seçildiği bir dizini seçmek için bir iletişim kutusu açar, örneğin: dname = uigetdir ("c: \").

dname = uigetdir ("başlangıç ​​yolu", "metin")- içinde belirtilen dizinin seçildiği bir dizin seçmek için bir iletişim kutusu açar ve belirtilen metni hiyerarşik bir dizin yapısıyla pencerenin üzerine yerleştirir. Geçerli MATLAB dizininin vurgulandığı dizin seçimi iletişim kutusunu açmak istiyorsanız, ilk giriş argümanı yerine boş bir dize belirtmelisiniz: dname = uigetdir ("", "metin").

MATLAB Dizin Fonksiyonları

Kullanıcının dizin adını seçmesinden sonraki diğer eylemler, dizinlerle çalışmak üzere tasarlanmış MATLAB işlevlerinin kullanıldığını varsayar.

CD- geçerli MATLAB dizinini değiştirin

yön- komut penceresinde dizinin içeriğini görüntülemek veya bir dizi yapıya içerik hakkında bilgi yazmak.

yol, yol- MATLAB arama yolu yönetimi.

Notlar.
Yol aracı işlevi, MATLAB arama yollarını yönetmek için özel bir Yol Ayarla iletişim kutusu görüntüler.
Dosya tarayıcı işlevi, geçerli dizinin içeriği, yeni bir geçerli dizin seçme ve MATLAB'da dosyaları açma yeteneği ile özel bir Geçerli Dizin iletişim kutusu görüntüler.

MATLAB'da dizinlerle çalışmak için tüm işlevler, MATLAB altında yardım sisteminde listelenmiştir: İşlevler - Kategorik Liste: Masaüstü Araçları ve Geliştirme Ortamı: Çalışma Alanı, Arama Yolu ve Dosya İşlemleri.

Yazı Tipi Seçimi İletişim Kutusu - uisetfont İşlevi

uisetfont işlevi iki amaç için kullanılabilir:
1) bir yazı tipi seçmek ve yapıda seçilen yazı tipi (ad, boyut, stil) hakkında bilgi kaydetmek için bir iletişim kutusu oluşturmak;
2) bu pencerede yapılan ayarlara göre bir yazı tipi seçmek ve metin nesnelerini, eksen etiketlerini veya kontrollerini değiştirmek için bir diyalog kutusu oluşturmak.

S = uiset yazı tipi- bir yazı tipi seçmek için bir iletişim kutusunun görünümüne yol açar ve içinde bir seçim yapıldıysa, alanları aşağıdaki anlamlara sahip olan S yapısı döndürülür:

S.FontName - yazı tipinin adını içeren dize; S.FontUnits - ölçü birimleri ("noktalar"); S.FontSize - boyut; S.FontWeight - cesurluk ("normal" veya "kalın"); S.FontAngle - yazı tipi ("normal" veya "italik").

Kullanıcı bir yazı tipi seçmediyse ve pencereyi kapattıysa, S sıfırdır.

S = uisetyazı tipi (S0)- varsayılan yazı tipinin S0 yapısının alanlarının değerlerine göre seçildiği yazı tipi seçimi iletişim kutusunun görünümüne yol açar, örneğin:

S0.FontName = "Arial"; S0.FontUnits = "puan"; S0.FontSize = 20; S0.FontWeight = "kalın"; S0.FontAngle = "normal"; S = uisetyazı tipi (S0)

S = uisetfont ("Pencere Başlığı") veya S = uisetfont (S0, "Pencere Başlığı")- önceki seçeneklerle aynı, yalnızca yazı tipi seçim penceresinin belirli bir başlığı vardır.

uiset yazı tipi (h)- h işaretçisi ile bir metin nesnesi, eksenler veya kontrol için bir yazı tipi seçmek için iletişim kutusunu çağırın.

uisetfont (h, "Pencere Başlığı")- uisetfont (h) ile aynı, yalnızca yazı tipi seçim penceresinin belirli bir başlığı vardır.

S = uisetfont (h), S = uisetfont (h, "Pencere Başlığı")- önceki iki seçenekle aynı, yalnızca kullanıcının seçimiyle ilgili bilgiler S yapısında ek olarak döndürülür.

Grafik nesnelerinin yazı tipini değiştirmeye bir örnek

hA = eksenler; % eksen oluşturma çizim (rand (10))% çizim hT = başlık ("Rastgele Grafik")% başlık ekleme% eksenleri işaretlemek için bir yazı tipi seçmek için bir iletişim kutusu açma uisetfont (hA, "Eksenler için yazı tipini ayarla"); % uisetfont başlığı için bir yazı tipi seçmek için bir iletişim kutusu açın (hT, "Başlık için yazı tipini ayarla"); Renk seçici iletişim kutusu - uisetcolor işlevi

uisetcolor işlevi, tıpkı uisetfont gibi, iki amaç için kullanılabilir:
1) bir renk seçimi iletişim kutusu oluşturmak ve seçilen rengi RGB formatında bir vektöre yazmak;
2) bir renk seçimi diyalog kutusu oluşturmak ve bu pencerede yapılan ayarlara göre Color özelliği olan grafik nesnelerini değiştirmek.

C = uisetcolor- bir renk seçimi iletişim kutusunun oluşturulması (varsayılan olarak mevcut renk beyazdır) ve seçilen rengin RGB formatında vektör C'ye yazılması. Kullanıcı bir seçim yapmadıysa, C sıfırdır.

C = uiset rengi (C0)- önceki seçenekle aynı, yalnızca renk seçimi iletişim kutusunda, geçerli renk RGB'deki C0 vektörü tarafından belirlenir. Kullanıcı bir seçim yapmadıysa, C, C0 ile aynıdır.

С = uisetcolor ("Pencere başlığı"), С = uisetcolor (С0, "Pencere başlığı")- önceki seçenekle aynı, yalnızca renk seçimi iletişim kutusunun belirli bir başlığı vardır.

uiset rengi (h)- h işaretçisi ile grafik nesnesinin rengini belirlemek için renk seçimi iletişim kutusunun açılması (grafik nesnesi Renk özelliğine sahip olmalıdır).

uisetcolor (h, "Pencere Başlığı")- öncekine benzer, ancak iletişim kutusunun belirli bir başlığı var.

C = uisetcolor (h) veya C = uisetcolor (h, "Pencere Başlığı")- son iki yöntemle aynı. Nesnenin rengini değiştirmeye ek olarak, seçilen renk RGB formatında C vektörüne yazılır.

Grafik nesnelerinin rengini değiştirmeye bir örnek.

hA = eksenler; % eksen oluşturma % çizim x = 0: 0.1: 10; y = günah (x); hL = çizim (x, y) hT = başlık ("Rastgele Grafik")% başlık ekleyin% bir çizgi rengi seçmek için bir iletişim kutusu açın uisetcolor (hL, "Çizgi rengi seçin")% bir başlık seçmek için bir iletişim kutusu açın color uisetcolor (hT, "Başlık rengini seçin")% eksen rengini seçmek için bir iletişim kutusu açın uisetcolor (hA, "Eksen rengini seçin")

İlerleme çubuğu olan pencere - bekleme çubuğu işlevi

Bekleme çubuğu işlevi, ilerleme çubuğu olan bir pencere oluşturur ve onu güncellemenize olanak tanır.

h = bekleme çubuğu (x, "metin")- ilerleme çubuğu ve çubuğun üzerinde belirtilen metni içeren bir pencere görüntüler. İlerleme çubuğunun uzunluğu, 0 ile 1 arasında olması gereken x değeriyle orantılıdır. Çıktı argümanı h, ilerleme çubuğu olan bir grafik penceresine yönelik bir işaretçidir.

bekleme çubuğu (x, h)- h işaretçisiyle ilerleme çubuğunun uzunluğunu x değerine göre artırır.

% boş ilerleme çubuğu olan bir pencere oluştur h = waitbar (0, "Özdeğer problemlerini çözme ..."); i = 1: 100 A = rand (30); L = eig (A); bekleme çubuğu (i / 100)% ilerleme çubuğunu güncelle bitiş% ilerleme çubuğu kapalıyken grafik penceresini kaldır (h)

Çubuğun çokgen bir nesne olduğunu, eksenlerin soyundan geldiğini ve bunun da bekleme çubuğu işlevi tarafından oluşturulan grafik penceresinin soyundan geldiğini hesaba katarsak çubuğun rengi değiştirilebilir. Örnek:

% boş ilerleme çubuğu olan bir pencere oluştur h = waitbar (0, "Özdeğer problemlerini çözme ..."); % bir çokgen nesnesine işaretçi bul hP = findobj (h, "Tür", "patch"); % poligonal nesne kümesinin (hP, "FaceColor", "g", "EdgeColor", "g") iç ve kenar renginin ayarlanması i = 1: 1000 waitbar (i / 1000, h) end close ( H)

Pencerenin kendisinin özellikleri, hem bir işaretçi hem de bekleme çubuğu işlevinin giriş bağımsız değişkenlerinde pencere özelliklerini ayarlamanıza izin vermesi gerçeği kullanılarak değiştirilebilir, örneğin:

h = bekleme çubuğu (0, "Sadece beyaz", "Renk", "w", "Ad", "program");

Düğmelerle İletişim Kutusu Oluşturma - Menü İşlevi

Menü işlevi, belirtilen etiketlerle bir sütunda düzenlenmiş metin ve düğmeler içeren bir pencere oluşturur. Kullanıcı düğmeye tıkladıktan sonra, menü işlevinin çıktı argümanında numarası döndürülür.

düğme = menü ("Yöntem seç", "Newton", "Gauss", "Zeidel")

Kullanıcı bir seçim yapmadıysa, buton = 0.

Çok sayıda komut girmeniz ve bunları sık sık değiştirmeniz gerekiyorsa, MatLab komut satırından çalışmak zordur. Diary komutuyla günlük tutmak ve çalışma ortamını kaydetmek işleri biraz daha kolaylaştırır. MatLab komutlarını çalıştırmanın en uygun yolu kullanmaktır. M-dosyaları, komutları yazabileceğiniz, hepsini bir kerede veya parçalar halinde yürütebileceğiniz, bir dosyaya kaydedebileceğiniz ve daha sonra kullanabileceğiniz. M-dosya düzenleyicisi, M-dosyaları ile çalışmak için tasarlanmıştır. Bu düzenleyiciyi kullanarak kendi işlevlerinizi oluşturabilir ve komut satırı dahil olmak üzere bunları arayabilirsiniz.

Menüyü genişlet Dosya ana MatLab penceresinin ve paragrafta Yeni alt öğeyi seç M-dosyası... Yeni dosya, M-dosya düzenleyici penceresinde açılır.

Bir grafik penceresinde iki grafiğin oluşturulmasına yol açan komutları düzenleyiciye yazın:

x =;
f = exp (-x);
alt nokta (1, 2, 1)
arsa (x, f)
g = günah (x);
alt nokta (1, 2, 2)
arsa (x, g)

Şimdi mydemo.m adlı bir dosyayı bir alt dizine kaydedin İşöğeyi seçerek ana MatLab dizininin Farklı kaydet Menü Dosya editör. Yürütülmek üzere dosyada bulunan tüm komutları çalıştırmak için, öğeyi seçin. Çalıştırmak menüde Hata ayıkla. Ekranda bir grafik penceresi görünecektir. Figür 1 numara fonksiyonların grafiklerini içerir. Sinüs yerine kosinüsü çizmeye karar verirseniz, M dosyasındaki g = sin (x) satırını g = cos (x) olarak değiştirin ve tüm komutları yeniden çalıştırın.

Açıklama 1

Yazarken bir hata yapılırsa ve MatLab komutu tanıyamazsa, komutlar yanlış girilene kadar yürütülür ve ardından komut penceresinde bir hata mesajı görüntülenir.

M-dosya düzenleyicisi tarafından sağlanan çok kullanışlı bir özellik, bazı komutların yürütülmesi. Grafik penceresini kapat Figür No.1. Sol tuşa basılı tutarken fare ile veya basılı tutarken ok tuşları ile seçin , programın ilk dört komutu ve bunları noktadan yürütün Değerlendirmek seçim Menü Metin. Grafik penceresinde yürütülen komutlara karşılık gelen yalnızca bir grafiğin görüntülendiğini lütfen unutmayın. Bazı komutları yürütmek için bunları seçin ve tuşuna basın. ... Kalan üç program komutunu yürütün ve grafik penceresinin durumunu izleyin. Kendiniz deneyin, önceki laboratuvarlardan herhangi bir örneği M-dosya düzenleyicisine yazın ve çalıştırın.

M-dosyasının bireysel blokları temin edilebilir yorumlar, yürütme sırasında atlanır, ancak bir M dosyasıyla çalışırken uygundur. MatLab'daki yorumlar yüzde işaretiyle başlar ve otomatik olarak yeşil renkle vurgulanır, örneğin:

Ayrı bir pencerede günah (x) çizim yüzdesi

M-file düzenleyicisinde aynı anda birden fazla dosya açılabilir. Dosyalar arası geçiş, editör penceresinin altında yer alan dosya adlarına sahip yer imleri kullanılarak gerçekleştirilir.

Mevcut bir M-dosyasının açılması, öğe kullanılarak yapılır. Açık Menü Dosyaçalışma ortamı veya M dosyalarının düzenleyicisi. Dosyayı bir argüman olarak dosya adını belirterek komut satırından MatLab edit komutunu kullanarak düzenleyicide de açabilirsiniz, örneğin:

Argümansız edit komutu yeni bir dosya oluşturur.
Bu ve sonraki laboratuvarlarda bulunan tüm örnekler en iyi şekilde yazılır ve M dosyalarına kaydedilir, yorumlarla desteklenir ve M dosyası düzenleyicisinden yürütülür. MatLab'da sayısal yöntemlerin ve programlamanın uygulanması, M-dosyalarının oluşturulmasını gerektirir.

2. M-dosyalarının türleri

MatLab'da iki tür M dosyası vardır: program dosyası(Script M-Files) bir dizi komut içeren ve dosya fonksiyonları(İşlev M Dosyaları), kullanıcı tanımlı işlevleri açıklar.

Önceki alt bölümü okuduğunuzda bir program dosyası (prosedür dosyası) oluşturdunuz. Program dosyasında belirtilen tüm değişkenler, yürütüldükten sonra üretim ortamında kullanılabilir hale gelir. Dosya düzenleyicide alt bölüm 2.1'de gösterilen dosya programını çalıştırın ve çalışma ortamının içeriğini görüntülemek için komut satırına whos yazın. Değişkenlerin açıklaması komut penceresinde görünecektir:

"kimin
Ad Boyut Bayt Sınıf
f 1x71 568 çift dizi
g 1x71 568 çift dizi
x 1x71 568 çift dizi
Genel toplam, 1704 bayt kullanan 213 öğedir

Bir program dosyasında tanımlanan değişkenler, diğer dosya programlarında ve komut satırından yürütülen komutlarda kullanılabilir. Dosya programında yer alan komutların yürütülmesi iki şekilde gerçekleştirilir:

  • Yukarıda açıklandığı gibi M-dosya düzenleyicisinden.
  • Komut satırından veya başka bir program dosyasından, M-dosyasının adı bir komut olarak kullanılır.

İkinci yöntemin kullanılması, özellikle oluşturulan program dosyası daha sonra tekrar tekrar kullanılacaksa çok daha uygundur. Aslında, oluşturulan M dosyası, MatLab'ın anladığı bir komut haline gelir. Tüm grafik pencerelerini kapatın ve komut satırına mydemo yazın, mydemo.m program dosyasındaki komutlara karşılık gelen bir grafik penceresi görünür. Mydemo MatLab komutunu girdikten sonra aşağıdaki işlemleri gerçekleştirir.

  • Girilen komutun üretim ortamında tanımlanan değişkenlerden herhangi birinin adı olup olmadığını kontrol eder. Bir değişken girilirse, değeri görüntülenir.
  • Bir değişken girilmemişse, MatLab yerleşik fonksiyonlar arasında girilen komutu arar. Komut yerleşik bir işlev olduğu ortaya çıkarsa, yürütülür.

Bir değişken veya yerleşik bir işlev girilmezse, MatLab komut adı ve uzantısı ile bir M dosyası aramaya başlar. m... Arama ile başlar geçerli dizin(Geçerli Dizin), içinde M dosyası bulunamazsa, MatLab içinde kurulu dizinleri arar. arama yolları(Yol). Bulunan M dosyası MatLab'da yürütülür.

Yukarıdaki eylemlerin hiçbiri başarıya yol açmadıysa, komut penceresinde bir mesaj görüntülenir, örneğin:

» Mydem
??? Tanımsız işlev veya değişken "mydem".

Tipik olarak, M dosyaları kullanıcının dizininde depolanır. MatLab'ın onları bulması için M-dosyalarının konumunu gösteren yolları ayarlamanız gerekir.

Açıklama 2

İki nedenden dolayı kendi M-dosyalarınızı ana MatLab dizininin dışında tutmalısınız. İlk olarak, MatLab'ı yeniden kurarken, ana MatLab dizininin alt dizinlerinde bulunan dosyalar yok edilebilir. İkinci olarak, MatLab'ı başlatırken, araç kutusu alt dizinindeki tüm dosyalar, iş performansını artırmak için bilgisayar belleğine en uygun şekilde yerleştirilir. M dosyasını bu dizine yazdıysanız, ancak MatLab'ı yeniden başlattıktan sonra kullanmak mümkün olacaktır.

3. Yolları ayarlama

MatLab sürüm 6'da .x geçerli dizin ve arama yolları belirlenir. Bu özellikler, uygun iletişim kutuları kullanılarak veya komut satırından komutlar kullanılarak ayarlanır.

Geçerli dizin bir iletişim kutusunda belirlenir Akım dizinçalışma ortamı. Öğe seçilirse pencere çalışma ortamında bulunur Akım dizin Menü görüşçalışma ortamı.
Geçerli dizin listeden seçilir. Listede yoksa, iletişim kutusundan eklenebilir. Araştır için Dosya, listenin sağ tarafında bulunan butona tıklanarak çağrılır. Geçerli dizinin içeriği dosya tablosunda görüntülenir.

Arama yolları iletişim kutusunda tanımlanır Ayarlamak Yol noktadan erişilen yol gezgini Ayarlamak Yol Menü Dosyaçalışma ortamı.

Bir dizin eklemek için düğmesine tıklayın Ekle Dosya Araştır için Yol gerekli dizini seçin. Tüm alt dizinleri ile bir dizin eklemek, butona tıklanarak gerçekleştirilir. Alt Klasörlerle Ekle. MATLAB arama yol. Arama sırası, bu alandaki yolların konumuna karşılık gelir ve listenin en üstünde yer alan dizin ilk önce bakar. Arama sırası değiştirilebilir veya bir dizine giden yol tamamen silinebilir, bunun için alanda dizini seçin MATLAB arama yol ve aşağıdaki düğmeleri kullanarak konumunu belirleyin:
Hareket ile Tepe - listenin en üstüne git;
Hareket Yukarı - bir pozisyon yukarı hareket ettirin;
Kaldırmak - listeden çıkarın;
Hareket Aşağı - bir pozisyon aşağı hareket ettirin;
Hareket ile Alt - listenin en altına koyun.

4. Yolları ayarlamak için komutlar.

MatLab 6'da yolları ayarlama adımları .x komutlarla çoğaltılır. Geçerli dizin cd komutuyla ayarlanır, örneğin cd c:\users\igor. Bağımsız değişken olmadan çağrılan cd komutu, geçerli dizine giden yolu yazdırır. Yolları ayarlamak için, iki bağımsız değişkenle çağrılan path komutunu kullanın:

yol (yol, "c: \ users \ igor") - en düşük arama önceliğine sahip c: \ users \ igor dizinini ekler;
yol ("c: \ users \ igor", yol) - en yüksek arama önceliğine sahip c: \ users \ igor dizinini ekler.

Path komutunu argüman olmadan kullanmak, ekranda görüntülenen arama yollarının bir listesini verir. rmpath komutunu kullanarak bir yolu listeden kaldırabilirsiniz:

rmpath ("c: \ users \ igor"), c: \ users \ igor dizinine giden yolu yollar listesinden kaldırır.

Açıklama 3

Özellikle amacından emin olmadığınız dizinlere giden yolları gereksiz yere silmeyin. Kaldırma, MatLab'da tanımlanan bazı fonksiyonların kullanılamaz hale gelmesine neden olabilir.

Örnek. Diskin kök dizininde oluşturun NS(veya öğrencilerin kendi dizinlerini oluşturmalarına izin verilen başka bir disk veya dizin) soyadınızla bir dizin, örneğin WORK_IVANOV ve mydemo.m adının altına mydemo.m M dosyasını buraya yazın. Dosyanın yollarını ayarlayın ve dosyaya komut satırından erişilebilir olduğunu gösterin. Sonuçları laboratuvar raporunda bildirin.

Çözüm seçeneği:

1. Diskin kök dizininde NS WORK_IVANOV dizini oluşturulur.
2. M-dosyası mydemo.m, mydemo3.m adı altında WORK_IVANOV dizinine yazılır.
3. Bir iletişim kutusu açılır. Ayarlamak Yol Menü Dosyaçalışma ortamı MatLab.
4. Düğmeye basılır Ekle Dosya ve görünen iletişim kutusunda Araştır için Yol WORK_IVANOV dizini seçilir.
5. Tüm alt dizinleri ile bir dizin eklemek, düğmesine basılarak gerçekleştirilir. Ekle ile birlikte Alt klasörler. Eklenen dizine giden yol, alanda görünür MATLAB arama yol.
6. Yolu ezberlemek için tuşuna basın. Kaydetmek iletişim kutusu Ayarlamak Yol.
7. Komut satırından mydemo3 komutunu yazarak tüm eylemlerin doğruluğunu kontrol edin. Ekranda bir grafik penceresi görünecektir.

5. Dosya işlevleri

Yukarıdaki dosya programları bir dizi MatLab komutlarıdır, girdi ve çıktı argümanları yoktur. Sayısal yöntemleri kullanmak için ve MatLab'da kendi uygulamalarınızı programlarken, giriş argümanları ile gerekli eylemleri gerçekleştiren ve sonucu çıktı argümanlarında döndüren dosya fonksiyonlarını oluşturabilmeniz gerekir. Bu alt bölümde, dosya işlevleriyle nasıl çalışacağınızı anlamanıza yardımcı olacak birkaç basit örnek tartışılmaktadır. Dosya prosedürleri gibi dosya işlevleri M-dosya düzenleyicisinde oluşturulur.

5.1. Bir giriş argümanıyla dosya işlevleri

Hesaplamalarda genellikle işlevi kullanmanın gerekli olduğunu varsayalım.

Bir kez bir dosya işlevi yazmak ve ardından bu işlevi değerlendirmek için gerekli olan her yerde onu çağırmak mantıklıdır. M-file düzenleyicisinde yeni bir dosya açın ve listeleme metnini yazın

f fonksiyonu = eğlencem (x)
f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 0.1));

İlk satırdaki işlev sözcüğü, bu dosyanın bir işlev dosyası içerdiğini belirtir. İlk satır fonksiyon başlığı, hangi ev sahibi fonksiyon adı ve giriş ve çıkış argümanlarının listeleri. Listede gösterilen örnekte, işlev adı myfun'dur, bir giriş argümanı x'tir ve bir çıkış f'dir. başlık takip ediyor fonksiyon gövdesi(bu örnekte, bir satırdan oluşur), burada değeri hesaplanır. Hesaplanan değerin f'ye yazılması önemlidir. Gereksiz bilgilerin ekranda görüntülenmesini önlemek için noktalı virgül eklenmiştir.

Şimdi dosyayı çalışma dizininize kaydedin. Lütfen öğenin seçiminin Kaydetmek veya Kaydetmek olarak Menü Dosya alanında dosyayı kaydetmek için bir iletişim kutusunun görünümüne yol açar Dosya isim ki bu zaten myfun adını içeriyor. Değiştirmeyin, fonksiyon dosyasını önerilen adla bir dosyaya kaydedin.

Artık oluşturulan işlev, örneğin komut satırından yerleşik sin, cos ve diğerleri ile aynı şekilde kullanılabilir:

"Y = eğlencem (1.3)
Y =
0.2600

Kendi işlevleri, bir program dosyasından ve başka bir dosya işlevinden çağrılabilir.

Bir uyarı

İşlev dosyasını içeren dizin güncel olmalıdır veya bunun yolu arama yollarına eklenmelidir, aksi takdirde MatLab işlevi bulamaz veya onun yerine aynı ada sahip başka birini çağırır (eğer mevcut dizinlerde bulunuyorsa). arama için).

Listede gösterilen dosya işlevinin önemli bir dezavantajı vardır. Bir diziden fonksiyon değerlerini hesaplamaya çalışmak, yerleşik fonksiyonları değerlendirirken olduğu gibi bir değerler dizisi değil, bir hata ile sonuçlanır.

"X =;
"Y = eğlencem (x)
??? ==> ^ kullanılırken hata oluştu
Matris kare olmalıdır.
==> C: \ MATLABRll \ work \ myfun.m'de hata
2. satırda ==> f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 1));

Dizilerle çalışmayı okuduysanız, bu eksikliğin giderilmesi zorluklara neden olmaz. Bir fonksiyonun değerini hesaplarken element bazında işlemleri kullanmanız yeterlidir.
Aşağıdaki listede gösterildiği gibi işlevin gövdesini değiştirin (değişiklikleri myfun.m dosyasına kaydetmeyi unutmayın).

f fonksiyonu = eğlencem (x)
f = exp (-x) * sqrt ((x. ^ 2 + 1) ./ (x. ^ 4 + 0.1));

Şimdi myfun işlevinin argümanı bir sayı veya bir vektör veya bir değerler matrisi olabilir, örneğin:

"X =;
"Y = eğlencem (x)
Y =
0.2600 0.0001

myfun işlevinin çağrılmasının sonucunun yazıldığı y değişkeni, otomatik olarak gerekli boyutta bir vektör olur.

myfun işlevini komut satırından veya bir dosya programı kullanarak bir segment üzerine çizin:

x =;
y = eğlencem (x);
arsa (x, y)

MatLab, dosya işlevleriyle çalışmak için bir fırsat daha sağlar - bunları bazı komutların argümanları olarak kullanmak. Örneğin, bir grafiği çizmek için, yukarıda gösterilen komut dizisinin yerini alan özel bir fplot işlevi kullanılır. fplot çağrılırken, grafiğini çizmek istediğiniz fonksiyonun adı kesme işareti içine alınır, çizim limitleri iki elemanlı bir satır vektöründe belirtilir.

fplot ("benim eğlencem",)

Tutma ile aynı eksenlerde arsa ve fplot ile myfun grafiklerini çizin. Lütfen fplot ile çizilen grafiğin, fonksiyonun davranışını daha doğru yansıttığını unutmayın, çünkü fplot argümanın adımını kendisi seçer ve görüntülenen fonksiyonun hızlı değişim alanlarında onu azaltır. Sonuçları laboratuvar raporunda bildirin.

5.2. Birden çok giriş argümanına sahip dosya işlevleri

Birkaç girdi argümanıyla dosya fonksiyonları yazmak, bir argüman durumundaki ile pratik olarak aynıdır. Tüm girdi bağımsız değişkenleri virgülle ayrılmış bir listeye yerleştirilir. Örneğin, aşağıdaki liste, üç boyutlu uzayda bir noktanın yarıçap vektörünün uzunluğunu hesaplayan bir dosya işlevi içerir.
Birkaç argümanla bir dosya fonksiyonunun listelenmesi

fonksiyon r = yarıçap3 (x, y, z)
r = kare (x. ^ 2 + y. ^ 2 + z. ^ 2);

»R = yarıçap3 (1, 1, 1)
R =
1.732

MatLab, birden çok girdi bağımsız değişkenine sahip işlevlere ek olarak, birden çok değer döndüren işlevler oluşturmanıza olanak tanır; birden fazla çıktı argümanına sahip olmak.

5.3. Birden çok çıktı bağımsız değişkenine sahip dosya işlevleri

Birden çok çıktı bağımsız değişkenine sahip dosya işlevleri, birden çok değer döndüren işlevleri değerlendirirken yararlıdır (matematikte bunlara denir vektör fonksiyonları). Çıktı bağımsız değişkenleri, virgülle ayrılmış olarak çıktı bağımsız değişkenleri listesine eklenir ve listenin kendisi köşeli parantez içine alınır. İyi bir örnek, bir zamanı saniye cinsinden saat, dakika ve saniyeye dönüştüren bir işlevdir. Bu dosya işlevi aşağıdaki listede gösterilmektedir.

Saniyeyi saat, dakika ve saniyeye çevirme fonksiyonunun listesi

fonksiyon = hms (sn)
saat = kat (sn / 3600);
dakika = kat ((sn-saat * 3600) / 60);
saniye = saniye-saat * 3600 dakika * 60;

Birkaç çıktı argümanıyla dosya işlevlerini çağırırken, sonuç uygun uzunlukta bir vektöre yazılmalıdır:

"[H, E, S] = hms (10000)
H =
2
M =
46
S =
40

6. MatLab'da programlamanın temelleri

Önceki alt bölümlerde kullanılan dosya fonksiyonları ve program dosyası programların en basit örnekleridir.İçlerinde bulunan tüm MatLab komutları sıralı olarak yürütülür. Daha birçok ciddi sorunu çözmek için, eylemlerin döngüsel olarak gerçekleştirildiği veya belirli koşullara bağlı olarak programların çeşitli bölümlerinin yürütüldüğü programlar yazmak gerekir. MatLab komutlarının yürütme sırasını belirleyen ana operatörleri ele alalım. Operatörler, hem dosya prosedürlerinde hem de karmaşık bir dallı yapıya sahip programlar oluşturmanıza izin veren işlevlerde kullanılabilir.

6.1. döngü operatörü için

Operatör, belirli sayıda tekrarlayan eylemi gerçekleştirmek üzere tasarlanmıştır. For ifadesinin en basit kullanımı aşağıdaki gibidir:

sayım için = başlangıç: adım: son
MatLab komutları
son

Burada count döngü değişkeni, start başlangıç ​​değeri, final son değer ve step ise döngüye her girildiğinde sayımın artırıldığı adımdır. Sayı sondan büyük olur olmaz döngü sona erer. Döngü değişkeni yalnızca tamsayı değerlerini değil, aynı zamanda herhangi bir işaretin gerçek değerlerini de alabilir. Bazı tipik örnekler kullanarak for döngüsü operatörünün kullanımını analiz edelim.
Parametreye bağlı olarak bir fonksiyon tarafından verilen bir eğri ailesi türetilmesi gereksin. -0.1 ila 0.1 arasındaki parametre değerleri için.
Dosya prosedürünün metnini M-dosya düzenleyicisine yazın ve FORdem1.m dosyasına kaydedin ve çalıştırın (M-dosya düzenleyicisinden veya komut satırından FORdem1 komutunu yazıp düğmesine basarak) ):

Bir eğri ailesi oluşturmak için % dosya programı
x =;
a = -0.1 için: 0.02: 0.1
y = exp (-a * x) * günah (x);
devam etmek
arsa (x, y)
son

Açıklama 4

M-dosya düzenleyicisi, ifadeleri otomatik olarak sol kenardan girintili olarak döngü içine yerleştirmeyi önerir. Programın metniyle çalışmanın rahatlığı için bu fırsatı kullanın.

FORdem1 yürütmesinin bir sonucu olarak, gerekli eğri ailesini içeren bir grafik penceresi görünecektir.

Toplamı hesaplamak için bir program dosyası yazın

Toplamı hesaplama algoritması, sonucun birikimini kullanır, yani. ilk başta toplam sıfıra eşittir ( S= 0), sonra bir değişkene k 1 girilir, 1 / hesaplanır k! eklenir S ve sonuç tekrar girilir S... Daha öte k bir artar ve son terim 1/10 olana kadar işlem devam eder!. Aşağıdaki listede gösterilen Fordem2 dosya programı, gerekli miktarı hesaplar.

Toplamı hesaplamak için Fordem2 dosya programının listesi

Toplamı hesaplamak için % dosya programı
% 1/1!+1/2!+ … +1/10!

Miktarı biriktirmek için S Sıfırlama
S = 0;
Döngüdeki miktarın % birikimi
k = 1:10 için
S = S + 1 / faktöriyel (k);
Son
% sonucu S komut penceresine çıkar

Program dosyasını M-file düzenleyicisine yazın, Fordem2.m dosyasındaki geçerli dizine kaydedin ve çalıştırın. Sonuç komut penceresinde görüntülenecektir, çünkü program dosyasının son satırında S değişkenin değerini çıktılamak için noktalı virgül olmadan bulunur S

Ara değerlerin görüntülenmesine neden olabilecek program dosyasındaki geri kalan satırların, komut penceresine çıktıyı bastırmak için noktalı virgülle sonlandırıldığına dikkat edin.

Yorum içeren ilk iki satır, program metninin geri kalanından yanlışlıkla boş bir satırla ayrılmamıştır. Kullanıcı, komut satırından help komutunu kullanarak Fordem2'nin ne yaptığı hakkında bilgi aldığında görüntülenenlerdir.

>> Fordem2'ye yardım edin
toplamı hesaplamak için dosya programı
1/1!+1/2!+ … +1/10!

Dosya programlarını ve dosya fonksiyonlarını yazarken yorumları ihmal etmeyin!
Program dosyasında kullanılan tüm değişkenler üretim ortamında kullanılabilir hale gelir. Bunlar sözde global değişkenlerdir. Öte yandan, çalışma ortamında girilen tüm değişkenler bir program dosyasında kullanılabilir.

Bir öncekine benzer, ancak değişkene bağlı olarak toplamı hesaplama problemini düşünün. x

Fordem2 dosya programında bu miktarı hesaplamak için for döngüsü içindeki satırı şu şekilde değiştirmeniz gerekir:

S = S + x ^ K / faktöriyel (k);

Programı başlatmadan önce değişkeni tanımlamanız gerekir. x aşağıdaki komutlarla komut satırında:

>> x = 1.5;
>> Fordem2
S =
3.4817

Olarak x Fordem2 dosya programında toplamı toplamak için eleman-eleman işlemleri kullanıldığından, bu bir vektör veya bir matris olabilir.

Fordem2'ye başlamadan önce, değişkene atadığınızdan emin olun. x bir değer ve örneğin on beş terimin toplamını hesaplamak için program dosyasının metninde değişiklik yapmanız gerekecektir. Girdi bağımsız değişkenleri olarak bir değeri olan genel bir dosya işlevi yazmak çok daha iyidir. x ve toplamın üst sınırı ve hafta sonu toplamın değeridir S(x). sumN dosya işlevi aşağıdaki listede gösterilmektedir.

Toplamı hesaplamak için dosya fonksiyonunun listesi

fonksiyon S = toplamN (x, N)
Toplamı hesaplamak için % dosya işlevi
% x / 1! + x ^ 2/2! +… + x ^ N / H!
% kullanım: S = toplamN (x, N)

Tutarı biriktirmek için S sıfırlama yüzdesi
S = 0;
Döngüdeki miktarın % birikimi
m = 1: 1: N için
S = S + x ^ M / faktöriyel (m);
son

Kullanıcı, komut satırına help sumN yazarak sumN işlevini kullanmayı öğrenebilir. Komut penceresi, dosya işlevinin metninden boş bir satırla ayrılmış, yorumlarla birlikte ilk üç satırı görüntüler.

Dosya fonksiyonunun değişkenlerinin global olmadığına dikkat edin (sumN dosya fonksiyonunda m). Komut satırından m'nin değerini görüntülemeye çalışmak, m'nin tanımsız olduğunu belirten bir mesajla sonuçlanır. Çalışma ortamında, komut satırından veya dosya programında tanımlanan aynı ada sahip global bir değişken varsa, dosya işlevindeki yerel değişkenle hiçbir şekilde bağlantılı değildir. Kural olarak, algoritmada kullanılan değişkenlerin çalışma ortamının aynı global değişkenlerinin değerlerini değiştirmemesi için kendi algoritmalarınızı dosya fonksiyonları şeklinde tasarlamanız daha iyidir.

For döngüleri iç içe olabilir, iç içe döngülerin değişkenleri farklı olmalıdır.

For döngüsü, sayı önceden belirlendiğinde tekrarlayan, benzer eylemler gerçekleştirmek için kullanışlıdır. Daha esnek bir while döngüsü, bu sınırlamayı aşmanıza olanak tanır.

6.2. while döngüsü ifadesi

Önceki paragraftaki örneğe benzer şekilde toplamı hesaplamak için bir örnek düşünelim. Verilen bir serinin toplamını bulmak gerekir. x(seri genişletme):
.

Terimler çok küçük olmadığı sürece, örneğin daha fazla modülde olduğu sürece toplam toplanabilir.Terim sayısı önceden bilinmediğinden burada for döngüsü vazgeçilmezdir. Çıkış yolu, döngü koşulu karşılandığı sürece çalışan bir while döngüsü kullanmaktır:

while döngüsü koşulu
MatLab komutları
son

Bu örnekte, döngü koşulu, geçerli terimin daha büyük olmasını sağlar. Bu durumu kaydetmek için büyüktür işareti (>) kullanılır. Bir serinin toplamını hesaplayan mysin dosya fonksiyonunun metni aşağıdaki listede gösterilmektedir.

Seri genişletme ile sinüsü hesaplayan mysin dosya fonksiyonunun listesi

fonksiyon S = mysin (x)
% Seri genişleme ile sinüsü hesapla
% Kullanım: y = mysin (x), -pi

S = 0;
k = 0;
while abs (x. ^ (2 * k + 1) / faktöriyel (2 * k + 1))> 1.0e-10
S = S + (-1) ^ k * x. ^ (2 * k + 1) / faktöriyel (2 * k + 1);
k = k + 1;
son

while döngüsünün for'dan farklı olarak bir döngü değişkeni olmadığını unutmayın, bu nedenle döngü başlamadan önce sıfır atamak zorunda kaldık ve döngü içinde k'yi bir artırdık.
while döngüsü koşulu yalnızca > işaretinden fazlasını içerebilir. Döngünün yürütülmesi için koşulları ayarlamak için, tabloda verilen ilişkinin diğer işlemlerine de izin verilir. 1.

Tablo 1. İlişki işlemleri

Daha karmaşık koşullar, mantıksal işleçler kullanılarak belirtilir. Örneğin, koşul iki eşitsizliğin aynı anda yerine getirilmesinden oluşur ve mantıksal operatör kullanılarak yazılır ve

ve (x> = -1, x< 2)

veya eşdeğer olarak & ile

(x> = -1) & (x< 2)

Mantıksal operatörler ve kullanım örnekleri tabloda verilmiştir. 2.

Tablo 2. Mantıksal operatörler

Şebeke

MatLab'a Yazma

eşdeğer gösterim

Mantıksal "VE"

ve (x< 3, k == 4)

(x< 3) & (k == 4)

Mantıksal "VEYA"

Veya (x == 1, x == 2)

(x == 1) | (x == 2)

"DEĞİL" inkar

Sonsuz bir serinin toplamını hesaplarken, terim sayısını sınırlamak mantıklıdır. Eğer seri, elemanları sıfıra meyletmediği için ıraksarsa, o zaman mevcut terimin küçük bir değeri için koşul hiçbir zaman yerine getirilemez ve program döngüye girer. Toplama işlemini, mysin dosya fonksiyonunun while döngüsünün koşuluna terim sayısına bir sınır ekleyerek gerçekleştirin:

while (mutlak (x. ^ (2 * k + 1) / faktöriyel (2 * k + 1))> 1.0e-10) & (k<=10000))

veya eşdeğer biçimde

while ve (mutlak (x. ^ (2 * k + 1) / faktöriyel (2 * k + 1))> 1.0e-10), k<=10000)

Tekrarlayan eylemlerin döngüler biçiminde düzenlenmesi programı basit ve anlaşılır kılar; ancak, genellikle belirli koşullara bağlı olarak bir veya daha fazla komut bloğunun yürütülmesi gerekir, yani. algoritma dallanma kullanın.

6.3. Koşullu if ifadesi

koşullu operatör Eğer komutları yürütmek için bir dallanma algoritması oluşturmanıza olanak tanır, burada belirli koşullar karşılandığında ilgili operatör bloğu veya MatLab komutları çalışır.

if ifadesi, belirli bir koşul yerine getirildiğinde bir komut bloğunu yürütmek için basit biçiminde veya dallanma algoritmaları yazmak için bir if-elseif-else yapısında kullanılabilir.
İfadenin değerlendirilmesine izin verin. Bölge alanında hesaplamalar yaptığınızı ve sonucun karmaşık bir sayı olduğuna dair bir uyarı görüntülemek istediğinizi varsayalım. Fonksiyonu değerlendirmeden önce, x argümanının değerini kontrol etmeli ve x modülü bir taneyi geçmiyorsa komut penceresinde bir uyarı yazdırmalısınız. Burada, uygulaması en basit durumda şöyle görünen koşullu operatörü kullanmak gerekir:

eğer koşul
MatLab komutları
son

Koşul sağlanırsa if ve end arasına yerleştirilen MatLab komutları uygulanır, koşul sağlanmazsa bitişten sonra yer alan komutlara geçiş gerçekleşir. Bir koşul kaydedilirken tabloda gösterilen işlemler kullanılır. 1.

Argümanın değerini kontrol eden dosya işlevi aşağıdaki listede gösterilmektedir. Uyarı komutu, komut penceresinde bir uyarı görüntülemek için kullanılır.

Argümanın değerini kontrol eden Rfun dosya fonksiyonunun listesi

f fonksiyonu = Rfun (x)
% sqrt hesaplar (x ^ 2-1)
Sonuç karmaşıksa % bir uyarı görüntüler
% kullanım y = Rfun (x)

% kontrol argümanı
eğer abs (x)<1
uyarı ("sonuç karmaşık")
son
% fonksiyon değerlendirmesi
f = kare (x ^ 2-1);

Şimdi birden az bir argümanda Rfun'u çağırmak, komut penceresine bir uyarı verecektir:

>> y = Rfun (0.2)
sonuç karmaşık
y =
0 + 0.97979589711327i

Rfun işlev dosyası yalnızca değerinin karmaşık olduğu konusunda uyarır ve onunla yapılan tüm hesaplamalar devam eder. Karmaşık sonuç bir hesaplama hatası anlamına geliyorsa, uyarı yerine error komutu kullanılarak fonksiyon sonlandırılmalıdır.

6.4. Dallanma operatörü if-elseif-else

Genel olarak if-elseif-else şube operatörünün uygulaması şu şekildedir:

eğer koşul 1
MatLab komutları
başka koşul 2
MatLab komutları
başka koşul 3
MatLab komutları
. . . . . . . . . . .
başka bir koşul N
MatLab komutları
Başka
MatLab komutları
son

Birinin veya diğerinin performansına bağlı olarak n koşullarda, programın ilgili dalı, aşağıdakilerden hiçbiri çalışmıyorsa çalışır. n koşullar, ardından else'den sonra yerleştirilen MatLab komutları uygulanır. Şubelerden herhangi birinin yürütülmesinden sonra operatör çıkar. İstediğiniz kadar şube olabilir veya sadece iki tane olabilir. İki dal olması durumunda, sondaki else kullanılır ve elseif atlanır. İfade her zaman end ile bitmelidir.
Aşağıdaki listede if-elseif-else operatörünün kullanımına bir örnek gösterilmektedir.

ifdem (a) işlevi
if-elseif-else operatörünün kullanımına ilişkin % örnek

eğer (a == 0)
uyarı ("sıfıra eşit")
başka bir == 1
uyarı ("bire eşittir")
başka bir == 2
uyarı ("ikiye eşit")
aksi takdirde a> = 3
uyarı ("a, üçten büyük veya üçe eşittir")
Başka
uyarı ("a üçten küçüktür ve sıfır, bir, iki'ye eşit değildir")
son

6.5. Şube operatörü değiştirmek

Switch ifadesi, çoklu seçim veya dallanma gerçekleştirmek için kullanılabilir. . if-elseif-else deyimine bir alternatiftir. Genel olarak, dallanma operatörü anahtarının uygulaması şöyle görünür:

switch_expression'ı değiştir
vaka değeri 1
MatLab komutları
vaka değeri 2
MatLab komutları
. . . . . . . . . . .
vaka değeri N
MatLab komutları
durum (değer N + 1, değer N + 2, ...)
MatLab komutları
. . . . . . . . . . . .
durum (NM değeri + 1, NM değeri + 2, ...)
aksi halde
MatLab komutları
son

Bu operatörde, önce switch_expression değeri değerlendirilir (skaler sayısal bir değer veya bir karakter dizisi olabilir). Bu değer daha sonra şu değerlerle karşılaştırılır: 1 değeri, 2 değeri,…, N değeri, N + 1 değeri, N + 2 değeri,…, NM + 1 değeri, NM + 2,… (sayısal da olabilir) veya dize) ... Bir eşleşme bulunursa, ilgili case anahtar sözcüğü yürütüldükten sonra MatLab komutları verilir. Aksi takdirde, aksi ve end anahtar kelimeleri arasında yer alan MatLab komutları yürütülür.

Case anahtar sözcüğüyle herhangi bir sayıda satır olabilir, ancak aksi anahtar sözcüğüyle bir satır olmalıdır.

Dallardan herhangi birinin yürütülmesinden sonra anahtardan çıkılırken diğer durumlarda belirtilen değerler kontrol edilmez.

Aşağıdaki örnek, anahtarın kullanımını göstermektedir:

işlev azaltma anahtarı (x)
a = 10/5 + x
değiştir
dava 1
uyarı ("a = -1")
durum 0
uyarı ("a = 0")
dava 1
uyarı ("a = 1")
durum (2, 3, 4)
uyarı ("a 2 veya 3 veya 4'tür")
aksi halde
uyarı ("a, -1, 0, 1, 2, 3, 4'e eşit değildir")
son

>> x = -4
değiştirme anahtarı (x)
bir =
1
uyarı: a = 1
>> x = 1
değiştirme anahtarı (x)
bir =
6
uyarı: a eşittir -1, 0, 1, 2, 3, 4

6.6. Döngü kesme ifadesi kırmak

Döngüsel hesaplamaları düzenlerken, döngü içindeki hataları önlemek için özen gösterilmelidir. Örneğin, size tam sayılardan oluşan bir x dizisi verildiğini ve y (i) = x (i + 1) / x (i) kuralına göre yeni bir y dizisi oluşturmak istediğinizi varsayalım. Açıkçası, görev bir for döngüsü kullanılarak gerçekleştirilebilir. Ancak orijinal dizinin öğelerinden biri sıfıra eşitse, bölme inf ile sonuçlanır ve sonraki hesaplamalar işe yaramaz olabilir. Bu durum, x(i)'nin mevcut değeri sıfıra eşitse döngüden çıkılarak önlenebilir. Aşağıdaki kod parçacığı, bir döngüyü kesmek için break ifadesinin kullanımını gösterir:

x = 1:20 için
z = x-8;
eğer z == 0
kırmak
son
y = x / z
son

z 0 olur olmaz döngü iptal edilir.

break ifadesi, for ve while döngülerinin yürütülmesini zamanından önce kesmenize olanak tanır. Bu döngülerin dışında break deyimi çalışmaz.

Break ifadesi iç içe bir döngüde kullanılıyorsa, yalnızca iç döngüden çıkar.