Bestandsextensie MATLAB. Loop break statement break

Het nadeel van de beschreven opslag- en laadfuncties is dat ze werken met bepaalde bestandsformaten (meestal mat-bestanden) en niet toestaan ​​dat gegevens in andere formaten worden geladen of opgeslagen. Ondertussen is het nodig om informatie te laden, bijvoorbeeld uit binaire bestanden die door anderen zijn gemaakt. softwareproducten voor verdere verwerking van de resultaten in MatLab. Hiervoor zijn functies ontwikkeld

fschrijf (<идентификатор файла>, <переменная>, <тип данных>);

<переменная>= bang (<идентификатор файла>);
<переменная>= bang (<идентификатор файла>, <размер>);
<переменная>= bang (<идентификатор файла>, <размер>, <точность>);

Hier<идентификатор файла>is een verwijzing naar het bestand om mee te werken. Om de identifier te krijgen, wordt de functie gebruikt

<идентификатор файла>= foppen (<имя файла>,<режим работы>);

waar parameter<режим работы>kan de waarden aannemen die in de tabel worden weergegeven. 5.1.

Tabel 5.1. Manieren om met bestanden in MatLab . te werken

parameter<режим работы>

Beschrijving

schrijven (wist de vorige inhoud van het bestand)

append (maakt een bestand aan als het niet bestaat)

lezen en schrijven (maakt geen bestand als het niet bestaat)

lezen en schrijven (wist de oude inhoud of maakt een bestand als het niet bestaat)

lezen en toevoegen (maakt een bestand aan als het niet bestaat)

een extra parameter die betekent werken met binaire bestanden bijv. ‘wb’, ‘rb’ ’‘ rb + ’,‘ ​​​​ab ’, etc.

Als de functie fopen () om de een of andere reden het bestand niet correct kan openen, retourneert het -1. Hieronder is een fragment van het programma voor het schrijven en lezen van gegevens uit een binair bestand:

een =;

fid = fopen ("mijn_bestand.dat", "wb"); % geopend bestand om te schrijven

fout ("Bestand is niet geopend");
einde

fwrite (fid, A, "dubbel"); % schrijfmatrix naar bestand (40 bytes)
fclose (fid); % sluit bestand

fid = fopen ("mijn_bestand.dat", "rb"); % geopend bestand om te lezen
if fid == -1% controleer of de opening correct is
fout ("Bestand is niet geopend");
einde

B = fread (fid, 5, "dubbel"); % lees 5 dubbele waarden
disp (B); % weergave op scherm
fclose (fid); % sluit bestand

Als resultaat van de werking van dit programma zal een 40-byte bestand my_file.dat worden aangemaakt in de werkdirectory, die 5 waarden zal bevatten van type dubbel geschreven als een reeks bytes (8 bytes voor elke waarde). De functie fread () leest achtereenvolgens opgeslagen bytes en converteert ze automatisch naar type double, d.w.z. elke 8 bytes worden geïnterpreteerd als één dubbele waarde.

In het gegeven voorbeeld is expliciet aangegeven hoeveel elementen (vijf) uit het bestand moeten worden gelezen. Het totale aantal elementen is echter vaak vooraf niet bekend, of verandert tijdens het programmaverloop. In dit geval is het beter om gegevens uit het bestand te lezen totdat het einde van het bestand is bereikt. Er is een functie in MatLab om te controleren of het einde van het bestand is bereikt

fef (<идентификатор файла>)

die 1 retourneert wanneer het einde van het bestand is bereikt en 0 anders. Laten we het programma herschrijven om een ​​willekeurig aantal dubbele elementen uit het invoerbestand te lezen.

fid = fopen ("mijn_bestand.dat", "rb"); % geopend bestand om te lezen
als fid == -1
einde

B = 0; % variabele initialisatie
cnt = 1; % teller initialisatie
while ~ feof (fid)% lus totdat het einde van het bestand is bereikt
= fread (fid, 1, "dubbel"); % lees een
% dubbele waarde (V bevat de waarde
% van item, N - aantal gelezen items)
als N> 0% als het element met succes is gelezen, dan
B (cnt) = V; % vormt een rijvector van V-waarden
cnt = cnt + 1; % verhoog de teller met 1
einde
einde
disp (B); % dat het resultaat op het scherm weergeeft
fclose (fid); % sluit bestand

In dit programma wordt dynamisch een rijvector gevormd als de elementen worden gelezen van Invoer bestand... MatLab vergroot automatisch de afmeting van de vectoren als de index van het volgende element 1 meer is dan het maximum. Een dergelijke procedure kost echter veel machinetijd en het programma begint merkbaar langzamer te lopen dan wanneer de afmeting van de vector B vanaf het allereerste begin gelijk zou zijn aan 5 elementen, bijvoorbeeld zoals deze

Er moet ook worden opgemerkt dat de functie fread () is geschreven met twee uitvoerparameters V en N. De eerste parameter bevat de waarde van het gelezen item en de tweede bevat het aantal gelezen items. V in dit geval de waarde N is gelijk aan 1 elke keer dat de informatie correct uit het bestand wordt gelezen, en 0 wanneer het serviceteken EOF wordt gelezen, wat het einde van het bestand aangeeft. Met de onderstaande controle kunt u correct een vector van B-waarden genereren.

Stringgegevens kunnen ook worden opgeslagen met de functies fwrite () en fread (). Bijvoorbeeld, gegeven de string

str = "Hallo MatLab";

fwrite (fid, str, "int16");

Het int16-type wordt hier gebruikt, omdat: bij het werken met Russische letters gebruikt het MatLab-systeem een ​​weergave van twee bytes van elk teken. Hieronder vindt u een programma voor het schrijven en lezen van stringgegevens met behulp van de functies fwrite () en fread ():

fid = fopen ("mijn_bestand.dat", "wb");
als fid == -1
fout ("Bestand is niet geopend");
einde

str = "Hallo MatLab"; % tekenreeks om te schrijven
fwrite (fid, str, "int16"); % schrijven naar bestand
fclose (fid);

fid = fopen ("mijn_bestand.dat", "rb");
als fid == -1
fout ("Bestand is niet geopend");
einde

B = ""; % tekenreeksinitialisatie
cnt = 1;
while ~ feof (fid)
= fread (fid, 1, "int16 => char"); % lees stroom
% karakter en conversie
% ervan in tekentype
als N> 0
B (cnt) = V;
cnt = cnt + 1;
einde
einde
disp (B); % lijnweergave op het scherm
fclose (fid);

Het resultaat van het uitvoeren van het programma ziet er als volgt uit:

We hopen dat we je geholpen hebben om het probleem met het MATLAB-bestand op te lossen. Als u niet weet waar u een toepassing uit onze lijst kunt downloaden, klikt u op de link (dit is de naam van het programma) - u vindt meer gedetailleerde informatie ten opzichte van waar de kluis te downloaden installatie versie vereiste toepassing.

Door deze pagina te bezoeken, kunt u specifiek deze of vergelijkbare vragen beantwoorden:

  • Hoe open je een bestand met de extensie MATLAB?
  • Hoe kan ik een MATLAB-bestand naar een ander formaat converteren?
  • Wat is de MATLAB-bestandsformaatextensie?
  • Welke programma's ondersteunen het MATLAB-bestand?

Als je na het bekijken van de dingen op deze site nog steeds geen bevredigend antwoord hebt gekregen op een van de bovenstaande vragen, betekent dit dat de informatie met betrekking tot het MATLAB-bestand dat hier wordt gepresenteerd niet volledig is. Neem contact met ons op via het contactformulier en schrijf op welke informatie je niet hebt gevonden.

Wat kan het probleem nog meer veroorzaken?

Er kunnen verschillende redenen zijn waarom je een MATLAB-bestand niet kan openen (niet alleen het ontbreken van een bijbehorende applicatie).
ten eerste- MATLAB-bestand is mogelijk onjuist gekoppeld (incompatibel) met geïnstalleerde applicatie om het te dienen. In dit geval dient u deze link zelf te wijzigen. Klik hiervoor met de rechtermuisknop op het MATLAB-bestand dat u wilt bewerken, klik op de optie "Om mee te openen" en selecteer vervolgens het programma dat u hebt geïnstalleerd uit de lijst. Hierna zouden de problemen met het openen van het MATLAB-bestand volledig moeten verdwijnen.
ten tweede- het bestand dat u wilt openen is mogelijk gewoon beschadigd. De beste oplossing is dan om een ​​nieuwe versie te zoeken, of deze opnieuw te downloaden van dezelfde bron als voorheen (misschien om de een of andere reden in de vorige sessie is de download van het MATLAB-bestand niet voltooid en kan het niet goed worden geopend).

Wil je helpen?

Als je hebt Extra informatie Over de MATLAB-bestandsextensie zullen we u dankbaar zijn als u deze deelt met de gebruikers van onze site. Gebruik het verstrekte formulier en stuur ons uw MATLAB-bestandsinformatie.

Bestanden zijn vrij veel voorkomende objecten in het MATLAB-systeem. Sommige bestandstypen zijn al besproken in de vorige hoofdstukken. Deze les behandelt bestandseigenschappen die onafhankelijk zijn van hun type en van toepassing zijn op elk bestand.

Bestand meestal een verzameling gegevens, verenigd door één naam. Het bestandstype wordt meestal bepaald door de extensie. We beschouwen het bestand als een geheel, hoewel het fysiek op de schijf kan worden weergegeven door verschillende gebieden - ze zeggen dat het bestand in dit geval gefragmenteerd is.

Voordat u een bestand gebruikt, moet het: open, en aan het einde van het gebruik - gesloten... Veel bestanden kunnen tegelijkertijd worden geopend en leesbaar. Laten we eens kijken naar de commando's voor het openen en sluiten van bestanden.

  • Team open naam, waarbij naam een ​​reeks tekens of een symbolische variabele moet bevatten, opent bestanden afhankelijk van het ontleden van de naamparameter en de extensie in de naamnaam:
    • variabele- opent een array met de naam in de array-editor;
    • .mat- opent het bestand, slaat de variabelen op in de structuur in het werkgebied;
    • .fig- opent het in de eigenschappeneditor;
    • .m- opent het m-bestand in de editor-debugger;
    • .mdl- opent het model in Simulink;
    • .R- opent, indien aanwezig, een m-bestand met dezelfde naam;
    • .html- opent HTML-document in de helpbrowser.

Als er bestanden met de extensie bestaan ​​in het MATLAB-pad, dan wordt het bestand dat wordt geretourneerd door de opdracht waarvan de naam wordt geopend, zo niet, dan het bestand van bestandssysteem... Als het bestand geen naamextensie heeft, wordt het geopend met het programma waarvan het bestandsformaat zou zijn gedetecteerd door de functie "bestandsnaam"). Standaard wordt openother aangeroepen voor alle bestanden met andere uitgangen dan de vermelde boven. Open roept de functies orepxxx aan, waarbij xxx de bestandsextensie is. De uitzonderingen zijn werkruimtevariabelen waarvoor openvar wordt aangeroepen en afbeeldingen waarvoor openim wordt aangeroepen. Door t-bestanden met de naam orepxxx te maken, kunnen gebruikers de verwerking van de bestanden wijzigen en nieuwe extensies aan de lijst toevoegen. Sluit bestanden die zijn geopend wanneer helpen openen, die je nodig hebt van de redactie die door onxxx is gebeld.

  • = uigetbestand (FILTERSPEC. Titel)... Opent een dialoogvenster met de naam Titel en een FILTERSPEC-filter (bijvoorbeeld een celarray met bestandsextensies) en retourneert het door de gebruiker geselecteerde bestand en het pad ernaartoe. Retourneert FILENAME = 0 als het bestand niet bestaat of als de gebruiker op Annuleren heeft geklikt. = uigetfile (FILTERSPEC, Titel. X. Y) plaatst het dialoogvenster op punt X, Y (coördinaten in pixels).

Uigetfile ("*. M; *. Fig; *. Mat: *. Mdl", "Alle MATLAB-bestanden (* .m, * .fig, * .mat. * .Mdl)") ...

  • = uiputbestand (FILTERSPEC. TITEL) slaat het bestand op in een door de gebruiker bestuurd dialoogvenster. De parameters zijn hetzelfde als in de uigetfile-functie.
  • Team ui open opent een dialoogvenster, en als de gebruiker een bestand met een bekende extensie heeft geselecteerd, roept hij het aan met open, of als de bestandsnaam onbekende extensie dan wordt uigetfile aangeroepen. Invoerargumenten voor uiopen kunnen mat lab, load, figure, simulink, editor zijn. Zonder invoerargumenten of met een invoerargument matlab, vraagt ​​het dialoogvenster u om * .m, * .fig, * .mat, * .mdl (als Simulink is geïnstalleerd), * .cdr (als state flow is geïnstalleerd), te selecteren. * .rtw, *.tmf, * .tlc, * .c, * .h, * .ads, * .adb (als Real-Time Workshop is geïnstalleerd). Met het laadargument - * .mat. Met het figuurargument worden * .fig aangeboden; simul ink - * .mdl, editor - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Uiopen figuur

  • Team uiloaden opent een bestand in een door de gebruiker bestuurd dialoogvenster met behulp van de opdracht laden.

Functie ui import Lanceert Wizard importeren(Import Wizard), importeren uit een bestand in de huidige map of buffer Windows delen... Ze past bij de keuze Data importeren uit het menu Bestand of keuze Plakken speciaal uit het menu Bewerk MATLAB.

  • ui importeren (BESTANDSNAAM)- start de Import Wizard door de FILENAME te openen. De importwizard toont gegevens voor: voorbeeld... De gegevens en de weergave ervan als MATLAB-variabelen verschijnen in het voorbeeldvenster. De werkelijke gegevens, tekst en kopteksten worden anders weergegeven MATLAB-variabelen... Voor ASCII-gegevens moet u ervoor zorgen dat de wizard Importeren de kolomscheidingstekens herkent. Op zichzelf kan het alleen een tab, spatie, komma of puntkomma herkennen. U moet op de knop klikken Volgende en bevestig in het volgende venster de selectie van het scheidingsteken gemaakt door de wizard, of selecteer Ander en voer een willekeurig scheidingsteken in.
  • ui import ("-bestand")- geeft eerst het dialoogvenster voor bestandsselectie weer.
  • ui import ("-pastespecial")- geeft eerst de inhoud van het Windows-klembord weer als voorbeeld.
  • S = ui-import (...) slaat de resulterende variabelen op als velden van de S-structuur.
  • Team uisave - gebruikersgestuurd opslaan (de opdracht opslaan wordt beschreven in les 2) met een Windows-dialoogvenster.
  • Functie opslaan als- slaat een tekening of Simulink-model op in het gewenste formaat op een opslagmedium of op een printapparaat.
  • Functie saveas (H, "BESTANDSNAAM")- slaat gegevens op volgens de opdracht descriptor graphics H in bestand FILENAME. Het bestandsformaat wordt bepaald door de extensie van de naam FILENAME.
  • Functie saveas (H. "FILENAME". "FORMAT")- doet hetzelfde, maar met de parameter FORMAT (het formaat wordt op dezelfde manier gespecificeerd als de bestandsnaamextensie en kan hiervan afwijken). FORMAT heeft voorrang op de bestandsnaamextensie. Functieparameters:
    • "vijg"- sla de figuur (grafiek) op in een binair fig-bestand;
    • "m" of "mfig"- sla de figuur op in een binair fig-bestand en maak een m-bestand om het te laden;
    • "matje"- sla de tekening op in een m-bestand als een reeks opdrachten voor het maken van tekeningen. Ondersteunt mogelijk niet de nieuwste grafische functies.

Saveas (gcf. "Output", "fig") saveas (gcf, "output", "bmp")

Commando of functie verwijderen verwijdert een bestand of grafisch object.

Referentie grafische objecteigenschappen

Standaard dialoogvensters.

Functies om te creëren dialoogvensters

MATLAB definieert 15 functies voor het maken van standaarddialoogvensters. Het uiterlijk van de dialoogvensters kan worden aangepast door de invoerargumenten van deze functies op te geven. Hieronder staan ​​voorbeelden van dialoogvensters en de namen van de bijbehorende functies met hun doel.

Dialoogvensters voor berichten:

errordlg - Creëert een dialoogvenster met een foutmelding;

helpdlg - maak een dialoogvenster voor het weergeven van informatie;

warndlg - Creëert een waarschuwingsdialoogvenster;

msgbox - maak een dialoogvenster voor het weergeven van een bericht.

Bevestigingsdialoogvenster(questdlg-functie)

Dialoogvenster voor het invoeren van informatie(invoerdlg-functie)

Dialoogvenster voor selectie uit een lijst(listdlg-functie)

Dialoogvensters voor het instellen van afdrukopties

pagesetupdlg - geeft een dialoogvenster met meerdere pagina's weer voor het instellen van bladparameters en het afdrukken van de inhoud van het grafische venster;

printdlg - geeft een dialoogvenster weer voor het selecteren van afdrukopties en printerinstellingen.

Dialoogvensters voor openen en opslaan van bestanden

uigetfile - geeft een dialoogvenster voor het openen van een bestand weer

uiputfile - geeft het dialoogvenster voor het opslaan van bestanden weer

Dialoogvenster voor mapselectie(uigetdir-functie)

Dialoogvenster voor lettertypeselectie(uisetfont-functie)

Dialoogvenster Kleurselectie(uisetcolor-functie)

Voortgangsbalk(wachtbalk functie)

Daarnaast de vermelde functies er is een dialoogfunctie voor het maken van een leeg grafisch venster. De eigenschappen van dit grafische venster kunnen worden ingesteld met behulp van de invoerargumenten voor de dialoogfunctie.

Laten we eens kijken naar het gebruik van standaarddialoogvensters aan de hand van het voorbeeld van het venster voor het openen van een bestand.

Voorbeeld van myview-toepassing met dialoogvenster voor het openen van bestanden

Laten we een myview-applicatie maken met grafische interface gebruiker, waarmee u grafische bestanden kunt bekijken. Het actieve toepassingsvenster wordt getoond in Fig. 1. Als u op de knop Afbeelding openen drukt, wordt het standaard dialoogvenster Bestand selecteren om te openen weergegeven. Het geselecteerde grafische bestand wordt weergegeven in het toepassingsvenster. Als u op de knop Afbeelding sluiten klikt, wordt het myview-toepassingsvenster gewist.

Rijst. 1. Toepassingsvenster mijnweergave.

Plaats in de GUIDE-omgeving in het lege toepassingsvenster de assen en twee knoppen zoals weergegeven in Afbeelding 2. Tag in de eigenschappencontrole de linkerknop met btnOpen en stel de String-eigenschap in op Afbeelding openen. ook voor rechter knop: tag is btnClose en String is Close Image.

De assen zijn nodig om het beeld weer te geven met behulp van de beeldfunctie. We zullen een low-level aanroep gebruiken voor de afbeeldingsfunctie, die de tegenovergestelde richting van de as aanneemt. ja zodat de tekening niet ondersteboven ligt. Dus verander in de eigenschappeninspecteur de richting van de as ja door de eigenschap YDir-assen in te stellen op omkeren. Als u de rasterlijnen en aslijnen wilt verbergen, maakt u de assen onzichtbaar door hun eigenschap Zichtbaar uit te zetten.

Rijst. 2. Voorbereiding van het applicatievenster in de GUIDE-omgeving.

Sla de toepassing op als mijnweergave en programmeer de terugbelgebeurtenissen voor de knoppen Afbeelding openen en Afbeelding sluiten.

Wanneer de gebruiker op Afbeelding openen klikt, moet een dialoogvenster voor het openen van een bestand verschijnen en na het selecteren van een bestand moet de afbeelding op de assen worden weergegeven. Laten we het standaard dialoogvenster voor het openen van bestanden gebruiken dat is gemaakt door de functie uigetfile. De eenvoudigste verwijzing ernaar is als volgt:

Uigetbestand

Als de gebruiker een bestand heeft geselecteerd en het venster heeft gesloten door op de knop Openen erin te klikken, retourneert het eerste uitvoerargument Bestandsnaam de bestandsnaam (met de extensie), en de tweede Padnaam retourneert het pad naar het bestand. Als de gebruiker het bestand niet heeft geselecteerd (op Annuleren heeft geklikt, of het venster heeft gesloten met een knop met een kruis op de venstertitel, of op ), dan is de variabele Bestandsnaam gelijk aan nul. Dus volgende stappen zijn afhankelijk van de waarde Bestandsnaam.

Als het bestand is geselecteerd, moet u:

1) vorm voor-en achternaam het dossier;

3) geef de afbeelding op de as weer met behulp van de afbeeldingsfunctie.

Als het bestand niet is geselecteerd, hoeft u niets te doen.

De Callback-gebeurtenis van de Close Image-knop kan uit slechts één operator bestaan ​​- een oproep naar de cla-functie om de assen te wissen.

Programmeer de subfuncties van de terugbelgebeurtenis van de knoppen Afbeelding openen en Afbeelding sluiten als volgt.

Functie btnOpen_Callback (hObject, eventdata, handles)% Behandel de callback-gebeurtenis van de Open Image-knop% Haal de naam en het pad naar het bestand = uigetfile; % Controleren of het bestand is geselecteerd als Bestandsnaam ~ = 0% Het volledige pad naar het bestand vormen FullName =; % Een afbeelding lezen uit een grafisch bestand Pict = imread (FullName); % Uitvoeren van het beeld op de beeldas ("CData", Pict) eindfunctie btnClose_Callback (hObject, eventdata, handles)% De callback-gebeurtenis van de Close Image-knop afhandelen% De cla-assen wissen

Start de myview-app. Wanneer u op de knop Afbeelding openen klikt, verschijnt het dialoogvenster Bestand selecteren om te openen. Het veld dat de inhoud van de huidige map weergeeft is echter niet zichtbaar grafische bestanden... Dit komt omdat het bestandsfilter (de vervolgkeuzelijst Bestanden van het type) standaard de tekenreeks "Alle MATLAB-bestanden" bevat en alleen bestanden met extensies die door MATLAB worden geaccepteerd, zichtbaar zijn. Elke keer dat u een grafisch bestand opent, selecteert u natuurlijk de regel "Alle bestanden (*. *)" in de vervolgkeuzelijst Bestandstype om alle bestanden in de huidige map weer te geven. Maar het is veel beter om onmiddellijk een dialoogvenster voor het openen van bestanden te maken, geconfigureerd om: bepaalde extensies... Als u bijvoorbeeld bestanden met de extensies bmp en jpg wilt weergeven, raadpleegt u de functie uigetfile met een invoerargument - een tekenreeks waarin sjablonen met puntkomma's worden geschreven de gewenste extensie* .bmp en * .jpg:

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

Wijzig de aanroep naar uigetfile in de btnOpen_Callback-subfunctie naar het bovenstaande en zorg ervoor dat de vervolgkeuzelijst Bestandstype van het dialoogvenster Bestand openen slechts twee regels bevat: "* .bmp; *. Jpg" (standaard) en "Alle bestanden (*. *)".

De uigetfile-functie maakt meer mogelijk flexibel beheer instellingen voor bestandsfilters. We zullen ze bekijken in het gedeelte dat is gewijd aan de beschrijving van functies voor het maken van standaarddialoogvensters. Laten we nu bespreken hoe we de mogelijkheid kunnen implementeren om meerdere bestanden tegelijk te selecteren in het standaard dialoogvenster voor het openen van bestanden.

Selecteer meerdere bestanden in het dialoogvenster Bestand openen. Gegevensuitwisseling tussen subfuncties van een GUI-toepassing.

In deze paragraaf gaan we in op twee vragen:

1) hoe de selectie van meerdere bestanden te organiseren in standaard raam een bestand openen en de inhoud ervan in een geschikte array lezen;

Het antwoord op de eerste vraag is simpel. Het is noodzakelijk om de uigetfile-functie aan te roepen met een extra paar invoerargumenten "MultiSelect" en "on":

Uigetbestand (..., "MultiSelect", "aan")

Afhankelijk van de keuze van de gebruiker, zijn de uitvoerargumenten van de volgende typen.

  • Als de gebruiker meerdere bestanden heeft geselecteerd in het dialoogvenster Bestand openen (door muis te selecteren of door te klikken en ingedrukt te houden) of ), dan wordt Bestandsnaam een ​​celarray, waarvan elke cel een regel bevat met de bestandsnaam (en extensie), en Padnaam wordt een regel met het pad naar deze bestanden (het pad naar alle bestanden is hetzelfde, daarom is Padnaam mag geen celarray zijn).
  • Als de gebruiker één bestand heeft geselecteerd in het dialoogvenster Bestand openen, dan is Bestandsnaam een ​​regel met de bestandsnaam (met een extensie) en Padnaam een ​​regel met het pad naar het bestand (zie de vorige sectie).
  • Als er geen selectie is gemaakt, is Bestandsnaam nul.

De tweede vraag (communicatie tussen subfuncties voor het afhandelen van gebeurtenissen) komt vaak voor bij het programmeren van GUI-toepassingen. Het is als volgt opgelost. De gegevens die moeten worden opgeslagen bij het uitvoeren van een subfunctie, worden weggeschreven naar de velden van de grepenstructuur. Vervolgens wordt in dezelfde subfunctie de structuur van de handvatten opgeslagen met behulp van de guidata-functie:

guidata (gcbo, handvatten)

Om gegevens in een andere subfunctie te krijgen, raadpleegt u het overeenkomstige veld van de structuur van de handvatten. De applicatie heeft bijvoorbeeld twee subfuncties btnA_Callback en btnB_Callback. Bij het uitvoeren van de subfunctie btnA_Callback, numerieke reeks, die nodig is in de btnB_Callback-subfunctie. Dan zouden deze subfuncties als volgt moeten zijn.

Functie btnA_Callback (hObject, eventdata, handvatten). ... ... handvatten.data =; guidata (gcbo, handvatten). ... ... functie btnB_Callback (hObject, eventdata, handvatten). ... ... balk (handvatten.gegevens). ... ...

Laten we eens kijken naar de myview-toepassing die in de vorige sectie is gemaakt en de mogelijkheden ervan uitbreiden. De gemoderniseerde applicatie moet het mogelijk maken om meerdere grafische bestanden tegelijk te openen en ze een voor een te bekijken. Na het selecteren van verschillende grafische bestanden in het toepassingsvenster, wordt er slechts één weergegeven en door op de knop te klikken (laten we het Volgende noemen) verschijnt de volgende afbeelding.

Voeg in de GUIDE-omgeving een knop toe met de tag btnNext en het opschrift Naast het myview-toepassingsvenstersjabloon (zie Fig. 2 van de vorige sectie) (zie Fig. 1). Maak het in Eigenschapcontrole niet beschikbaar door de eigenschap Inschakelen uit te schakelen. Het zal beschikbaar zijn terwijl de applicatie draait als de gebruiker verschillende grafische bestanden heeft geselecteerd om te bekijken.

Rijst. 1. Myview-toepassingsvenster met knop Volgende

Nu moet je de btnOpen_Callback-subfunctie wijzigen voor het afhandelen van de Callback-gebeurtenis van de Open Image-knop en de Callback-gebeurtenis van de Next-knop programmeren. Bij het verwerken van de selectie van bestanden (of een bestand) door de gebruiker in het dialoogvenster Bestand openen, moet u rekening houden met alle mogelijkheden: meerdere bestanden zijn geselecteerd, slechts één bestand is geselecteerd, geen bestanden zijn geselecteerd.

Als er meerdere grafische bestanden zijn geselecteerd (d.w.z. de FileName-array is een array van cellen), dan lezen we de afbeeldingen in een array van cellen en slaan we deze op in het Pict-veld van de greepstructuur. Het aantal geopende grafische bestanden (d.w.z. de lengte van de FileName-array) wordt opgeslagen in het ImageNum-veld van de handle-structuur. Daarnaast hebben we het nummer van de huidige afbeelding nodig om te onthouden welke we het CurImage-veld van de grepenstructuur zullen maken.

Na het openen van de bestanden, zullen we de inhoud van de eerste ervan weergeven in het toepassingsvenster. Als er meerdere bestanden zijn geopend, maken we de knop Volgende beschikbaar, en als er maar één is, maken we Volgende niet beschikbaar.

Wanneer u de Callback-gebeurtenis van de knop Volgende verwerkt, maakt u de assen leeg en geeft u de volgende afbeelding erop weer. Als de huidige afbeelding de laatste is, wordt de eerste weergegeven.

Hieronder vindt u de tekst van de subfuncties btnOpen_Callback en btnNext_Callback. De subfunctie btnClose_Callback blijft ongewijzigd.

Functie btnOpen_Callback (hObject, eventdata, handles)% De callback-gebeurtenis van de Open Image-knop afhandelen% Bestandsnamen en paden ernaartoe halen (of één bestandsnaam en pad ernaar toe) = uigetfile ("*. Bmp; *. Jpg", "MultiSelect", "aan"); % Zoek uit hoeveel bestanden zijn geselecteerd als iscell (FileName)% FileName een array van cellen is, dus er zijn verschillende bestanden geselecteerd% schrijf in het ImageNum-veld van de handvatten structuur het aantal geselecteerde bestanden handle.ImageNum = lengte (FileName ); % Vorm voor elk bestand in de lus de volledige naam% en lees de inhoud ervan in de k-de cel van de celarray,% die is opgeslagen in het Pict-veld van de handvatten-structuurhandles.Pict =; % eerst maken we de array leeg voor k = 1: handles.ImageNum FullName =; handvatten.Pict (k) = imread (FullName); end% De eerste foto is de huidige handle.CurImage = 1; % We geven het weer op de afbeelding van de assen ("CData", handvatten.Pict (handles.CurImage))% Sla de structuur van de handvatten op om deze te openen in de btnNext_Callback guidata-subfunctie (gcbo, handvatten)% Maak de knop Volgende beschikbaar set (handles. btnNext, "Enable "," on ") else% Slechts één bestand is geselecteerd of geen als FileName ~ = 0% Eén bestand is geselecteerd, we genereren vol pad ernaar FullName =; % We lezen de afbeelding in de Pict-variabele (de structuur van de handvatten is niet nodig) Pict = imread (FullName); % Geef de afbeelding weer op de afbeelding ("CData", Pict)-as% Maak de knop Volgende niet beschikbaar set (handles.btnNext, "Enable", "off") einde functie beëindigen btnNext_Callback (hObject, eventdata, handles)% De callback afhandelen gebeurtenis van de knop Afbeelding openen % Controleren welke afbeelding de huidige is als handle.CurImage

Opmerking

De myview-applicatie kan verder worden verbeterd, bijvoorbeeld na het selecteren van bestanden en voordat de eerste wordt weergegeven, is het een goed idee om de assen te wissen. Er moet ook rekening mee worden gehouden dat de gebruiker niet-grafische bestanden heeft geselecteerd.

Referentie voor functies voor het maken van dialoogvensters.

Een foutdialoogvenster maken - errordlg

De errordlg-functie wordt gebruikt om een ​​standaardfoutdialoogvenster te maken. De meest voorkomende beloptie

h = errordlg ("Berichttekst", "Venstertitel").

H slaat een aanwijzer op naar het gegenereerde grafische venster met een foutmelding. bijvoorbeeld

h = errordlg ("Delen door nul", "Rekenmachine");

Leidt naar een venster zoals dit met een aanwijzer h:

Het venster blijft op het scherm staan ​​totdat het wordt gesloten met de OK-knop, de toets, de knop met een kruisje op de titel, of met behulp van het titelcontextmenu.

Het foutberichtvenster is niet modaal (u kunt naar andere MATLAB-toepassingsvensters navigeren). Om het modaal te maken, stelt u na het maken van een venster met de functie errordlg de eigenschap WindowStyle van het grafische venster in op "modal": set (h, "WindowStyle", "modal")

Een andere manier om een ​​modaal foutberichtvenster te maken, is door de functie msgbox te gebruiken, die hieronder wordt beschreven.

De grootte van het venster wordt automatisch geselecteerd, afhankelijk van de lengte van de tekstregels, zeer lange regels worden omwikkeld. Als u een bericht met meerdere regels wilt ontvangen dat op een bepaalde manier in regels is opgesplitst, moet u een reeks cellen met tekenreeksen opgeven:

h = errordlg (("Verkeerde gegevensindeling"; "of"; "niet-overeenkomende gegevens"), "dlgnaam")

Opeenvolgend aanmaken van vensters met foutmeldingen met dezelfde titel:

h = errordlg ("Delen door nul", "Rekenmachine"); ... h = errordlg ("Onjuiste bewerking", "Rekenmachine");

resulteert in verschillende vensters met foutmeldingen. Om een ​​venster te activeren (positie boven andere vensters) en er een nieuw bericht in weer te geven, in plaats van een nieuw venster aan te maken, roept u errordlg aan met het derde argument "on" is voorzien:

h = errordlg ("Delen door nul", "Rekenmachine"); ... h = errordlg ("Onjuiste bewerking", "Rekenmachine", "aan"); % activering van het oude venster

Als het oude venster was gesloten, maakt h = errordlg (..., "on") natuurlijk gewoon een nieuw venster aan.

Nadat een dialoogvenster met een foutmelding is weergegeven, blijft de toepassing draaien. De vraag rijst vaak: hoe de uitvoering te pauzeren totdat het dialoogvenster is gesloten. Dit wordt gedaan met behulp van de waitfor-functie, die de uitvoering van de toepassing pauzeert totdat een specifiek grafisch object is verwijderd. Een aanwijzer naar dit object (in ons geval een foutberichtvenster) wordt opgegeven als invoerargument voor de waitfor-functie:

h = errordlg ("Delen door nul", "Rekenmachine"); set (h, "WindowStyle", "modal") waitfor (h) a = 1; ....

Een waarschuwingsdialoogvenster maken - warndlg

De warndlg-functie werkt op vrijwel dezelfde manier als errordlg (zie hierboven), maar er is geen optie om deze aan te roepen met een derde invoerargument "aan". Bijvoorbeeld,

resulteert in zo'n venster met aanwijzer h

Het waarschuwingsvenster verschilt alleen van het venster met foutmeldingen door het pictogram:

Door warndlg opnieuw aan te roepen met dezelfde invoerargumenten, wordt een nieuw venster gemaakt, zelfs als het oude nog niet is gesloten.

Dialoogvenster Help maken - helpdlg

De helpdlg-functie werkt op vrijwel dezelfde manier als warndlg (zie hierboven). Bijvoorbeeld,

h = warndlg ("Bestand is verouderd", "Preprocessor")

resulteert in een venster zoals dit met aanwijzer h:

die alleen verschilt van het waarschuwingsvenster door het pictogram:

Als u helpdlg opnieuw oproept met dezelfde venstertitel, wordt het oude venster geactiveerd als het nog niet is gesloten. Als het was gesloten, wordt er een nieuwe gemaakt.

Meerdere regels berichttekst, venstermodaliteit en opschorting van de uitvoering van programma's totdat het venster is gesloten, worden allemaal op dezelfde manier gedaan als bij het aanroepen van errordlg.

Berichtvenster maken - generieke msgbox-functie

Met de msgbox-functie kunt u de hierboven besproken fout-, waarschuwings- en helpvensters maken. Om tekst met meerdere regels te krijgen, moet u als eerste argument een celarray met tekenreeksen opgeven. Daarnaast is het mogelijk om een ​​venster te maken met een willekeurig icoon. Het regelen van de modaliteit van het venster en het maken van een nieuw venster met dezelfde titel wordt gedaan met behulp van de invoerargumenten msgbox. De msgbox-functie retourneert een aanwijzer naar het venster dat het maakt.

h = msgbox ("Zeer ernstige fout!", "Programma", "fout")- maakt een venster aan met een foutmelding en een standaardpictogram (vergelijkbaar met errordlg).

c = ("Zeer ernstige fout!"; "Niet" "aan niemand vertellen"); h = msgbox (c, "Programma", "fout")- vergelijkbaar met de vorige, maar het bericht bestaat uit twee regels.

h = msgbox ("De laatste waarschuwing!", "Programma", "waarschuwing")- maakt een venster met een waarschuwing en een standaardpictogram (vergelijkbaar met warndlg).

h = msgbox ("Help uzelf ...", "Programma", "help")- maakt een venster met helpinformatie en een standaardpictogram (vergelijkbaar met helpdlg).

h = msgbox ("Hier is geen afbeelding", "Programma", "geen")- maakt een venster met tekstinformatie zonder een pictogram.

h = msgbox ("Berichttekst", "Venstertitel", "aangepast", afbeelding, kleurenkaart)- maakt een venster met een gebruikerspictogram, bijvoorbeeld:

= imread ("phone.gif"); % lezen afbeelding en kleurenkaart uit bestand h = msgbox ("Iemand belt u", "Telefoon", "aangepast", foto, kaart)

resulteert in een venster als dit

Het laatste invoerargument ("modaal", "niet-modaal" of "vervangen") bepaalt het uiterlijk van het venster en hoe een nieuw venster met dezelfde titel wordt weergegeven. Als de methode voor het weergeven van een nieuw venster niet is opgegeven, wordt er altijd een nieuw venster gemaakt.

Voorbeelden:

h = msgbox ("Zeer ernstige fout!", "Programma", "modaal")- geeft een modaal standaardvenster weer met een foutmelding

h = msgbox ("Iemand belt u", "Telefoon", "aangepast", foto, kaart, "modaal")- toont een modaal venster met een bepaalde afbeelding voor het pictogram en een kleurenkaart.

h = msgbox ("Zeer ernstige fout!", "Programma", "fout", "vervangen")- vervangt het vorige venster met de titel Programma, als er geen is, maakt dan een nieuw venster. Bij het uitvoeren van opdrachten

h = msgbox ("Zeer ernstige fout!", "Programma", "fout") h = msgbox ("Er is iets vreemds", "Programma", "waarschuwing", "vervangen")

het tweede venster zal het eerste vervangen.

Bevestigingsdialoogvenster - questdlg-functie

De questdlg-functie creëert een modaal bevestigingsvenster met meerdere knoppen. Bij het maken van een venster kan elk van de knoppen focus hebben. In het uitvoerargument retourneert de functie questdlg de keuze van de gebruiker (een tekenreeks met de naam van de knop die is ingedrukt) of een lege tekenreeks als het venster werd gesloten zonder op een knop te klikken. Gebruik een celreeks van tekenreeksen om tekst met meerdere regels te krijgen. Als een lange regel is opgegeven, wordt deze automatisch omwikkeld.

Voorbeelden:

button = questdlg ("Weet je het zeker?")- creatie van een standaard bevestigingsvenster met de knoppen Ja, Nee, Annuleren. Ja-knop in focus (standaard).

button = questdlg ("Weet je het zeker?", "Programma")- creatie van een standaard bevestigingsvenster met een titel en knoppen Ja, Nee, Annuleren.

button = questdlg ("Weet je het zeker?", "Programma", "Nee")- creatie van een standaard bevestigingsvenster met een titel en knoppen Ja, Nee, Annuleren. De focus ligt op de knop Nr.

button = questdlg ("Weet je het zeker?", "Programma", "Ja", "Misschien", "Misschien")- het creëren van een standaard bevestigingsvenster met een titel en twee knoppen Ja en Misschien. De focus ligt op de knop Misschien.

button = questdlg ("Weet je het zeker?", "Programma", "Ja", "Nee", "Ik weet het niet", "Nee")- creatie van een standaard bevestigingsvenster met een titel en drie knoppen Ja, Nee en ik weet het niet. De focus ligt op de knop Nee.

Dialoogvenster voor het invoeren van informatie (inputdlg-functie)

De functie inputdlg maakt een dialoogvenster met een gespecificeerd aantal invoerregels. Het aantal invoerregels en hun titels worden bepaald met behulp van invoerargumenten. Het venster bevat de knoppen OK en Annuleren. Als de gebruiker op OK klikt, is het uitvoerargument van de inputdlg-functie een celarray met informatie die door de gebruiker is ingevoerd in de invoerregels. Als het venster werd gesloten door op de knop Annuleren te klikken of op een andere manier (behalve de knop OK), dan is het uitvoerargument een lege reeks cellen.

Voorbeelden:

M = invoerdlg ("TIJD" "WAARDEN"))- creëert een dialoogvenster

Als de gebruiker bijvoorbeeld in de regel TIJD 0,1 0,3 0,55 4,5 heeft ingevoerd en in de regel WAARDEN - 2,3 9,55 2,1 0,7 en op OK heeft geklikt, heeft de celreeks M de volgende waarden.

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

U kunt str2num gebruiken om ze naar numerieke vectoren te converteren:

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

M = inputdlg ("TIME" "VALUES"), "Input Data") - creëert een dialoogvenster met de titel Input Data.

Om tekst met meerdere regels te kunnen invoeren, moet u het derde invoerargument specificeren - het aantal regels in elk invoergebied:

M = invoerdlg ("matrix A" "Matrix B"), "Invoergegevens", 3)- als het derde argument een getal groter dan één is, dan hebben alle invoergebieden dezelfde hoogte en schuifbalken.

Als de invoer is voltooid door op de knop OK te klikken, bevat elke cel van de M-array een reeks tekens. De reeks tekens bevat net zoveel regels als er in het overeenkomstige invoergebied zijn ingevoerd.

M = inputdlg ("vector A" "Matrix B"), "Invoergegevens")- om de hoogte van de invoergebieden afzonderlijk in te stellen, moet u het aantal regels van elk invoergebied in de kolomvector specificeren als het derde invoerargument:

M = inputdlg ("vector A" "Matrix B"), "Invoergegevens")- om de lengte van de invoergebieden in tekens in te stellen (in dit geval 100 tekens), moet het derde invoerargument een matrix zijn:

M = inputdlg ("Naam" "Jaar"), "Info", (char ("John", "Smith") "1990"))- om een ​​venster met gevulde velden te krijgen (om de gebruiker om het invoerformaat te vragen), specificeert u het vierde invoerargument. Het moet een celarray zijn van dezelfde grootte als het eerste invoerargument:

M = inputdlg (("Naam" "Jaar"), "Info", (char ("John", "Smith") "1990"), "aan")- het laatste vijfde invoerargument "aan" betekent dat de gebruiker het formaat van het dialoogvenster kan wijzigen.

Dialoogvenster om uit een lijst te kiezen - listdlg-functie

De functie listdlg maakt een dialoogvenster met een keuzelijst van de opgegeven tekenreeksen en knoppen voor selectie en deselectie. Lijstregels worden gespecificeerd door een array van cellen. Meerdere selectie van lijstitems wordt ondersteund. Het volgende wordt geretourneerd in de uitvoerargumenten: Selectie - een getal of vector met de nummers van de geselecteerde regels en ok - informatie over of de selectie is voltooid door op de OK-knop te drukken (ok = 1), of dat het venster in een andere is gesloten manier (ok = 0). Als ok = 0, dan is Selectie een lege array. Standaard kunnen verschillende lijstitems worden geselecteerd (door met de muis te klikken terwijl u Ctrl ingedrukt houdt) en er is een knop Alles selecteren om alle items te selecteren.

= listdlg ("ListString", ("Lineair"; "Kwadratisch"; "Kubiek"))- maakt een selectiedialoogvenster met een lijst van drie regels: lineair, kwadratisch, kubisch. Als de gebruiker bijvoorbeeld Kwadratisch heeft geselecteerd en op de OK-knop heeft gedrukt, dan is Selectie = 2 en ok = 1. Als de gebruiker Lineair en Kubiek heeft geselecteerd en op de OK-knop heeft gedrukt, dan is Selectie = en ok = 1, enz.

De listdlg-functie is toegankelijk in de algemene vorm:

= listdlg ("ListString", celreeks van tekenreeksen, param1, val1, param2, val2, ...)

De parameters en hun mogelijke waarden zijn als volgt:

  • "SelectionMode" - modus voor het selecteren van rijen in de lijst, waarden: "single" (om slechts één rij te selecteren) of "multiple" (standaard om meerdere rijen te selecteren);
  • "ListSize" - grootte van het lijstgebied in pixels, de waarde wordt ingesteld door de vector [breedte-hoogte] (standaard);
  • "InitialValue" - initiële selectie van regels, de waarde is een vector met regelnummers die worden geselecteerd wanneer de keuzelijst wordt weergegeven (standaard 1);
  • "Naam" - de titel van het venster, de waarde wordt ingesteld door een string (standaard een lege string);
  • "PromptString" - tekst boven de lijst, waarden: string of array van strings of cellen uit strings (voor tekst met meerdere regels). De standaardwaarde is een lege celarray.
  • "OKString" - een inscriptie op de knop voor het selecteren en sluiten van het venster, de waarde is een string (standaard "OK");
  • "CancelString" - een inscriptie op de knop om het venster te sluiten zonder selectie, de waarde is een string (standaard "Annuleren");
  • "uh" - de hoogte van de vensterknoppen, de waarde is ingesteld in pixels (18 standaard);
  • "fus" - de afstand tussen de knoppen en de lijst, de waarde is ingesteld in pixels (18 standaard);
  • "ffs" is de afstand van de vensterrand tot de lijst, de waarde is ingesteld in pixels (8 standaard).
Bijvoorbeeld het commando

= listdlg ("ListString", ("Lineair"; "Kwadratisch"; "Kubiek"), ... "Naam", "Benadering", "ListSize", "PromptString", "Selecteer methode", "fus", 5)

resulteert in het maken van de volgende combobox-dialoog:

Dialoogvenster voor het instellen van bladparameters en hoe de inhoud van het grafische venster wordt afgedrukt - functie pagesetupdlg

pagesetupdlg - het dialoogvenster Pagina-instelling oproepen voor het huidige grafische venster (als er geen venster is, wordt er een nieuw gemaakt).

pagesetupdlg (hF) - Roept het dialoogvenster Pagina-instelling op voor het grafische venster met de hF-aanwijzer.

De instellingen die in het dialoogvenster Pagina-instelling zijn gemaakt, hebben invloed op de overeenkomstige eigenschappen van het grafische venster: PaperSize, PaperType, PaperPozition, enz.

Met de functie pagesetupdlg kunt u de parameters van slechts één grafisch venster configureren, d.w.z. hF kan geen vector van pointers zijn. Om tegelijkertijd de hoofdparameters van verschillende grafische vensters te configureren, gebruikt u de pagedlg-functie, waarvan het invoerargument een vector van verwijzingen naar grafische vensters kan zijn.

Het venster Pagina-instelling is modaal; de uitvoering van de toepassing wordt gepauzeerd totdat het venster wordt gesloten.

Dialoogvenster voor het selecteren van afdrukopties en het instellen van de printer - printdlg-functie

printdlg - roep het standaard Windows-dialoogvenster op om het huidige grafische venster af te drukken (als er geen venster is, wordt er een nieuw aangemaakt).

printdlg (hF) - roept het standaard Windows-dialoogvenster op voor het afdrukken van een grafisch venster met een hF-aanwijzer.

printdlg ("- crossplatform", hF) - Roept het MATLAB Print-dialoogvenster op om een ​​grafisch venster met een hF-aanwijzer af te drukken.

Het afdrukvenster is modaal, de toepassing wordt gepauzeerd totdat het venster wordt gesloten.

Dialoogvenster Bestand openen - functie uigetbestand

= uigetbestand- geeft een dialoogvenster weer voor het openen van een bestand met de inhoud van de huidige map. Het bestandsfilter is ingesteld op ALLE MATLAB-bestanden, waardoor alleen bestanden worden weergegeven met extensies die MATLAB ondersteunt. In de vervolgkeuzelijst Bestandstype kunt u alleen M-bestanden selecteren, of alleen grafische vensters, enz., of alle bestanden.

Als de gebruiker een bestand heeft geselecteerd (door op het bestandspictogram te klikken en op de knop Openen te klikken, of door te dubbelklikken op het bestandspictogram, of door de bestandsnaam in de regel Bestandsnaam te typen en op de knop Openen te drukken), dan bevat FName een regel met de bestandsnaam en extensie, en PName is het pad naar het bestand. Als de gebruiker het bestand niet heeft geselecteerd en het venster heeft gesloten, dan is FName = 0 en PName = 0. Controleer na het aanroepen van de uigetfile-functie of het bestand is geselecteerd. Als dit het geval is, voegt u deze regels samen om de volledige bestandsnaam te krijgen:

= uigetbestand; if ~ isequal (FName, 0) FullName = strcat (PName, FName); % verder gelezen gegevens vanaf het einde van het bestand

Bestandsfilter gespecificeerd in het eerste invoerargument van de uigetfile-functie, bijvoorbeeld

= uigetbestand ("*.txt");

maakt een dialoogvenster voor het openen van een bestand aan waarvan de lijst Bestandstypen twee tekenreeksen bevat: "* .txt" en "Alle bestanden (*. *)". U kunt meer dan één extensie opgeven, maar dan moet u een reeks cellen uit tekenreeksen gebruiken:

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

Om beschrijvingen van bestandstypen in de lijst Bestandstypen te plaatsen, moet u een celarray van twee kolommen specificeren. Elke regel bevat de bestandsextensie en beschrijving (terwijl de regel "Alle bestanden (*. *)" niet is toegevoegd aan de lijst Bestandstype van het dialoogvenster Bestand openen):

Filter = ("*. Txt", "Tekstbestanden (* .txt)"; "* .dat", "Gegevensbestanden (* .dat)"; "* .res", "Resultaten (* .res)") ; = uigetbestand (Filter);

Als filter kan er ook een tekenreeks met de bestandsnaam zijn, dan staat deze in de regel Bestandsnaam wanneer het dialoogvenster Bestand openen verschijnt, en de extensie wordt als de standaardextensie genomen en verschijnt in de lijst Bestanden van het type samen met "Alle bestanden (*. *) ".

Als u wilt weten welk type bestanden de gebruiker heeft geselecteerd in de lijst Bestandstypen, dan moet u uigetfile raadplegen met drie uitvoerargumenten:

= uigetbestand (Filter);

De FilterIndex registreert het bestandstypenummer.

voor opdracht eigen venstertitel het openen van een bestand (in plaats van Bestand selecteren om te openen), wordt de uigetfile-functie aangeroepen met het tweede invoerargument:

= uigetbestand (Filter, "Bestand openen");

En om de opgegeven bestandsnaam in de regel Bestandsnaam te plaatsen wanneer u een venster voor het openen van een bestand maakt, moet u deze opgeven in het derde invoerargument (de bestandsnaam kan vol zijn):

= uigetbestand (Filter, "Bestand openen", "input.txt")

Dit is hoe u de inhoud van elke map kunt weergeven, bijvoorbeeld de hoofdmap van de D-schijf:

= uigetbestand (Filter, "Bestand openen", "d: \")

Opmerking
Als we MATLAB-bestanden willen openen zoals het standaard uigetbestand suggereert, maar onze eigen venstertitel instellen (en de standaardmap of het standaardbestand in het dialoogvenster Bestand openen), dan kan het eerste invoerargument, het filter, niet worden weggelaten. Het moet een lege regel zijn:

= uigetbestand ("", "Bestand openen", "d: \");

Om de gebruiker te selecteer meerdere bestanden, moet u uigetfile op een van de volgende manieren aanroepen:

= uigetbestand ("MultiSelect", "aan"); of = uigetbestand ("*. dat", "MultiSelect", "aan"); of = uigetfile ("*. dat", "Bestand openen", "d: \", "MultiSelect", "on")

Als de gebruiker meerdere bestanden heeft geselecteerd in het dialoogvenster, dan is het uitvoerargument FName een celarray van de namen van de geselecteerde bestanden (PName blijft natuurlijk een string, aangezien de bestanden in dezelfde map zijn geselecteerd). Om een ​​array van cellen met volledige bestandsnamen te verkrijgen, is de volgende code geschikt (de strcat-functie kan een string samenvoegen met een array van cellen uit strings):

= uigetbestand ("MultiSelect", "aan"); if ~ isequal (FName, 0) FullName = strcat (PName, FName); einde

MATLAB-functies om bestanden van verschillende formaten te openen

Aangezien we het hebben over het openen van bestanden, is het gepast om de belangrijkste MATLAB-functies te noemen die zijn ontworpen om met bestanden van verschillende formaten te werken.

laden- het lezen van gegevens uit een binair of tekstbestand.

open- een bestand openen. De openingsmethode is afhankelijk van de extensie:

  • verlenging m- het bestand wordt geopend in de M-file-editor;
  • verlenging mdl- het model wordt geopend in Simulink;
  • verlenging mat- het schrijven van binaire gegevens uit het bestand naar de structuurvelden, de namen van de structuurvelden vallen samen met de namen van de variabelen die in het bestand zijn vastgelegd;
  • verlenging vijg- een grafisch venster wordt geopend;
  • verlenging P- als er een m-file is met dezelfde naam, dan wordt deze geopend in de M-file editor;
  • uitbreiding htm, html- het bestand wordt geopend in het browservenster van het MATLAB-helpsysteem;
  • verlenging pdf- het bestand wordt geopend in Adobe Acrobat (vereist installatie van openen door associatie in Windows);
Om een ​​bestand met een niet-standaard extensie te openen, kunt u uw eigen functie schrijven die standaard wordt aangeroepen. De naam wordt gevormd door het woord open en de extensie, bijvoorbeeld om bestanden te openen met de extensie dtm, schrijf de functie opendtm. Voorbeeld. Stel dat u binaire bestanden moet openen met de extensie dtm, die de waarden van twee variabelen bevatten, waarvan de namen kunnen verschillen. De waarden van deze variabelen moeten worden geschreven naar de tijd- en datavariabelen van de werkomgeving. Dan schrijven we de opendtm-bestandsfunctie:

functie opendtm (fname)% gegevens inlezen in structuur S = load ("- mat", fname); % leer de namen van de structuurvelden (variabelenamen) F = veldnamen (S); % Waarden toewijzen aan de tijd- en gegevensvariabelen van de werkbank assignin ("base", "time", S. (F (1))) assignin ("base", "data", S. (F (2) ))

Hier leest u hoe u de functie opendtm kunt gebruiken:

A = 1:10; B = vierkante (A); save ("my.dtm", "A", "B")% schrijf A en B naar een bestand in binair open ("my.dtm")% open roept opendtm en tijd en gegevens worden aangemaakt in de productieomgeving

Opmerking. De uiopen-functie combineert de mogelijkheden van uigetfile en open — het creëert een dialoogvenster voor het openen van bestanden en roept vervolgens open aan om het te openen.

winopen - open een bestand in Windows met de toepassing die bij deze extensie hoort, bijvoorbeeld: winopen ("art.doc") - open art.doc in MS Word; winopen ("mijn.txt") - mijn.txt openen in kladblok; winopen ("all.htm") - opent all.htm in de webbrowser.

notitieboekje- openen of aanmaken van een M-book in MS Word.

publiceren- uitvoering van het M-bestand, opgesplitst in cellen en het resultaat opslaan in het opgegeven formaat: html, doc, ppt, xml, rpt, latex.

do's en systeem- uitvoeren van opdrachten (zie ook!), starten van uitvoerbare bestanden, bijvoorbeeld:

systeem ("calc")- het starten van de rekenmachine.

uiimport- opent het venster Wizard Importeren voor het importeren van gegevens uit verschillende formaten.

data importeren- gegevensimport afhankelijk van de bestandsextensie, ook handig voor het lezen van gegevens uit een tekstbestand met scheidingstekens.

csvread- het lezen van numerieke gegevens uit een door komma's gescheiden tekstbestand.

dlmread- het lezen van numerieke gegevens uit een tekstbestand met een gespecificeerd scheidingsteken.

textread, textscan- het lezen van gegevens uit een tekstbestand met een bepaald formaat.

xlsread- het lezen van gegevens uit MS Excel-bestanden.

wavread- het lezen van een geluidswav-bestand.

aviread- het lezen van een avi-bestand.

imread- grafische bestanden lezen.

Naast de genoemde functies zijn er low-level functies voor het werken met bestanden. Hun namen beginnen met de letter f:

fclose- het bestand sluiten.

feof- controleer of het einde van het bestand is bereikt.

ijzersterk- informatie krijgen over de laatste fout tijdens input-output.

fgetl- het lezen van een regel uit een tekstbestand zonder eindteken.

fgets- het lezen van een regel uit een tekstbestand met een end-of-line-teken.

fopen- een bestand openen.

fprintf- geformatteerde opname naar een bestand.

fread- lezen uit een binair bestand.

terugspoelen- ga naar het begin van het bestand.

fscanf- geformatteerde lezing uit een bestand.

fseek- overgang naar een bepaalde positie in het bestand.

ftell- het verkrijgen van de huidige positie in het bestand.

fwrite- schrijven naar een binair bestand.

Alle functies voor het lezen van gegevens staan ​​vermeld in het help-onderwerp: MATLAB: Functies - Categorische lijst: Bestand I / O.

Dialoogvenster Bestand opslaan - uiputfile-functie

Het gebruik van uiputfile is vergelijkbaar met het hierboven besproken uigetfile. Op dezelfde manier kunt u het extensiefilter, de venstertitel, het bestand of het standaardpad instellen. Het verschil is dat er geen "MultiSelect"-optie in uiputfile is (het is niet nodig bij het opslaan). Als de gebruiker bovendien een bestaande bestandsnaam selecteert in het dialoogvenster voor het opslaan van bestanden, verschijnt er een bevestigingsvenster. Als u Ja selecteert, wordt het dialoogvenster voor het opslaan van bestanden beëindigd en bij Nee keert u terug naar het venster voor het opslaan van bestanden. Het controleren op gebruikersactiviteit en het verkrijgen van de volledige bestandsnaam is precies hetzelfde als voor uigetfile.

MATLAB-functies om gegevens in bestanden op te slaan

Laten we een lijst maken van de belangrijkste MATLAB-functies die zijn ontworpen om gegevens van verschillende typen op te slaan.

sparen- gegevens opslaan in tekst en binaire bestanden

Opmerking.
De functie uisave combineert de mogelijkheden van uigetfile en save - het creëert een dialoogvenster voor het opslaan van bestanden waarin alle omgevingsvariabelen worden opgeslagen.

csvwrite- schrijven van numerieke gegevens naar een tekstbestand gescheiden door komma's.

dlmwrite- het schrijven van numerieke gegevens naar een tekstbestand via een gespecificeerd scheidingsteken.

xlswrite- gegevensregistratie in MS Excel-formaat.

wavwrite- een wav-bestand opnemen.

avifile- maakt een avi-bestand aan en geeft er een identifier aan terug, die in andere functies wordt gebruikt: addframe, close.

film2avi- een avi-bestand maken van een matrix, waarvan elke kolom informatie over één frame opslaat (zie functies: film, getframe, im2frame).

opschrijven- het schrijven van een grafisch bestand.

Naast de vermelde functies zijn er functies op laag niveau voor het werken met bestanden waarvan de naam begint met de letter f (zie de sectie "MATLAB-functies voor het openen van verschillende bestandsindelingen" hierboven).

Dialoogvenster voor mapselectie - uigetdir-functie

De uigetdir-functie opent het dialoogvenster Bladeren naar map en retourneert het pad naar de geselecteerde map, of nul als de gebruiker geen keuze heeft gemaakt. Controleren of een directory is geselecteerd, gaat op dezelfde manier als in de uigetfile-functie voor het dialoogvenster voor het openen van bestanden. Manieren om uigetdir te bellen:

dname = uigetdir- opent het dialoogvenster voor het selecteren van mappen, waarin de huidige MATLAB-map is gemarkeerd.

dname = uigetdir ("startpad")- opent een dialoogvenster voor het selecteren van een map waarin de opgegeven map is geselecteerd, bijvoorbeeld: dname = uigetdir ("c: \").

dname = uigetdir ("startpad", "tekst")- opent een dialoogvenster voor het kiezen van een directory, waarin de gespecificeerde directory is geselecteerd en plaatst de gespecificeerde tekst boven het venster met een hiërarchische directorystructuur. Als u het dialoogvenster voor het selecteren van mappen wilt openen, waarin de huidige MATLAB-map is gemarkeerd, moet u een lege tekenreeks opgeven in plaats van het eerste invoerargument: dname = uigetdir ("", "tekst").

MATLAB-directoryfuncties

Verdere acties nadat de gebruiker de mapnaam heeft geselecteerd, veronderstellen het gebruik van MATLAB-functies die zijn ontworpen om met mappen te werken.

CD- verander de huidige MATLAB-directory

dir- het weergeven van de inhoud van de map in het opdrachtvenster of het schrijven van informatie over de inhoud naar een reeks structuren.

pad, rmpath- MATLAB zoekpadbeheer.

Opmerkingen.
De pathtool-functie geeft een speciaal dialoogvenster Set Path weer voor het beheren van MATLAB-zoekpaden.
De bestandsbrowserfunctie geeft een speciaal dialoogvenster Huidige map weer met de inhoud van de huidige map, de mogelijkheid om een ​​nieuwe huidige map te selecteren en bestanden te openen in MATLAB.

Alle functies voor het werken met mappen in MATLAB staan ​​vermeld in het helpsysteem onder MATLAB: Functies - Categorische lijst: Bureaubladhulpmiddelen en ontwikkelomgeving: werkruimte, zoekpad en bestandsbewerkingen.

Dialoogvenster Lettertypeselectie - uisetfont-functie

De uisetfont-functie kan voor twee doeleinden worden gebruikt:
1) het creëren van een dialoogvenster voor het kiezen van een lettertype en het opnemen van informatie over het geselecteerde lettertype (naam, grootte, stijl) in de structuur;
2) het creëren van een dialoogvenster voor het kiezen van een lettertype en het wijzigen van tekstobjecten, aslabels of bedieningselementen in overeenstemming met de instellingen die in dit venster zijn gemaakt.

S = uisetlettertype- leidt tot het verschijnen van een dialoogvenster voor het kiezen van een lettertype en, als daarin een keuze is gemaakt, wordt de structuur S geretourneerd, waarvan de velden de volgende betekenis hebben:

S.FontName - string met de naam van het lettertype; S.FontUnits - meeteenheden ("punten"); S.FontSize - grootte; S.FontWeight - durf ("normaal" of "vet"); S.FontAngle - lettertype ("normaal" of "cursief").

Als de gebruiker geen lettertype heeft geselecteerd en het venster heeft gesloten, is S nul.

S = uisetlettertype (S0)- leidt tot het verschijnen van het dialoogvenster voor het selecteren van lettertypen, waarin het standaardlettertype wordt geselecteerd in overeenstemming met de waarden van de velden van de S0-structuur, bijvoorbeeld:

S0.FontName = "Arial"; S0.FontUnits = "punten"; S0.Lettergrootte = 20; S0.FontWeight = "vet"; S0.FontAngle = "normaal"; S = uisetlettertype (S0)

S = uisetfont ("Venstertitel") of S = uisetfont (S0, "Venstertitel")- hetzelfde als de vorige opties, alleen het lettertypeselectievenster heeft een bepaalde titel.

uisetfont (h)- roep het dialoogvenster voor het kiezen van een lettertype voor een tekstobject, assen of besturingselement op met een h-aanwijzer.

uisetfont (h, "Venstertitel")- hetzelfde als uisetfont (h), alleen het lettertypeselectievenster heeft een bepaalde titel.

S = uisetfont (h), S = uisetfont (h, "Venstertitel")- hetzelfde als de twee vorige opties, alleen informatie over de keuze van de gebruiker wordt bovendien geretourneerd in de structuur S.

Een voorbeeld van het wijzigen van het lettertype van grafische objecten

hA = assen; % plotassen (rand (10))% plotten hT = titel ("Random Graph")% een titel toevoegen% een dialoogvenster openen voor het kiezen van een lettertype voor het markeren van de assen uisetfont (hA, "Lettertype voor assen instellen"); % open een dialoogvenster voor het kiezen van een lettertype voor de titel uisetfont (hT, "Set font for title"); Dialoogvenster Kleurkiezer - uisetcolor-functie

De uisetcolor-functie kan, net als uisetfont, voor twee doeleinden worden gebruikt:
1) het creëren van een dialoogvenster voor kleurselectie en het schrijven van de geselecteerde kleur naar een vector in RGB-indeling;
2) het creëren van een kleurselectiedialoogvenster en het wijzigen van grafische objecten die een kleureigenschap hebben in overeenstemming met de instellingen die in dit venster zijn gemaakt.

C = uisetkleur- het maken van een dialoogvenster voor kleurselectie (de huidige kleur is standaard wit) en het schrijven van de geselecteerde kleur naar vector C in RGB-formaat. Als de gebruiker geen keuze heeft gemaakt, dan is C nul.

C = uisetkleur (C0)- hetzelfde als de vorige optie, alleen in het kleurselectiedialoogvenster wordt de huidige kleur gespecificeerd door de vector C0 in RGB. Als de gebruiker geen keuze heeft gemaakt, dan is C hetzelfde als C0.

С = uisetcolor ("Venstertitel"), С = uisetcolor (С0, "Venstertitel")- hetzelfde als de vorige optie, alleen het dialoogvenster voor kleurselectie heeft een bepaalde titel.

uisetkleur (h)- het dialoogvenster voor kleurselectie openen voor het specificeren van de kleur van het grafische object met de h-aanwijzer (het grafische object moet de eigenschap Color hebben).

uisetcolor (h, "Venstertitel")- vergelijkbaar met de vorige, maar het dialoogvenster heeft een bepaalde titel.

C = uisetcolor (h) of C = uisetcolor (h, "Venstertitel")- hetzelfde als de laatste twee methoden. Naast het wijzigen van de kleur van het object, wordt de geselecteerde kleur in RGB-indeling naar vector C geschreven.

Een voorbeeld van het veranderen van de kleur van grafische objecten.

hA = assen; % creëren van assen% plotten x = 0: 0,1: 10; y = zonde (x); hL = plot (x, y) hT = titel ("Random Graph")% voeg een titel toe% open een dialoogvenster om een ​​lijnkleur te selecteren uisetcolor (hL, "Selecteer lijnkleur")% open een dialoogvenster om een ​​titel te selecteren kleur uisetcolor (hT, "Selecteer titelkleur")% open een dialoogvenster voor het kiezen van de kleur van de assen uisetcolor (hA, "Selecteer assenkleur")

Venster met een voortgangsbalk - wachtbalkfunctie

De wachtbalkfunctie maakt een venster met een voortgangsbalk en stelt u in staat deze bij te werken.

h = wachtbalk (x, "tekst")- geeft een venster weer met een voortgangsbalk en de opgegeven tekst boven de balk. De lengte van de voortgangsbalk is evenredig met de waarde x, die tussen 0 en 1 moet liggen. Het uitvoerargument h is een verwijzing naar een grafisch venster met een voortgangsbalk.

wachtbalk (x, h)- vergroot de lengte van de voortgangsbalk met aanwijzer h volgens de waarde van x.

% maak een venster met een lege voortgangsbalk h = wachtbalk (0, "Eigenwaardeproblemen oplossen ..."); voor i = 1: 100 A = rand (30); L = eig (A); wachtbalk (i / 100)% update het einde van de voortgangsbalk% verwijder het grafische venster met de voortgangsbalk dicht (h)

De kleur van de balk kan worden gewijzigd als we er rekening mee houden dat de balk een veelhoekig object is, een afstammeling van assen, die op hun beurt een afstammeling zijn van het grafische venster dat is gemaakt door de wachtbalkfunctie. Voorbeeld:

% maak een venster met een lege voortgangsbalk h = wachtbalk (0, "Eigenwaardeproblemen oplossen ..."); % zoek een aanwijzer naar een polygoonobject hP = findobj (h, "Type", "patch"); % instelling van de kleur van het interieur en de rand van de veelhoekige objectset (hP, "FaceColor", "g", "EdgeColor", "g") voor i = 1: 1000 wachtbalk (i / 1000, h) end close ( H)

De eigenschappen van het venster zelf kunnen ook worden gewijzigd met behulp van zowel een aanwijzer ernaar als het feit dat u met de wachtbalkfunctie venstereigenschappen kunt instellen in invoerargumenten, bijvoorbeeld:

h = wachtbalk (0, "Gewoon wit", "Kleur", "w", "Naam", "programma");

Een dialoogvenster met knoppen maken - Menufunctie

De menufunctie creëert een venster met tekst en knoppen gerangschikt in een kolom met de opgegeven labels. Nadat de gebruiker op de knop heeft geklikt, wordt het nummer geretourneerd in het uitvoerargument van de menufunctie.

knop = menu ("Selecteer methode", "Newton", "Gauss", "Zeidel")

Als de gebruiker geen keuze heeft gemaakt, dan is knop = 0.