shah
shah

Reputation: 311

read .yml files in matlab issue

For my project I want to read yml file in matlab using YAMLMatlab. My .yml files look like this. I am ust showing a part of .yml file. My file is around 29 MB.

%YAML:1.0
Block size: [ 16, 16 ]
Block stride: [ 8, 8 ]
Cell size: [ 8, 8 ]
block hist size: 36
block per img: [ 63, 63 ]
Total elements in array: 142884
nbins: 9
Scale: 1.
Level: 0
Width: 512
Height: 512
features:
   - 1.5302167832851410e-01
   - 1.0552208870649338e-01
   - 1.6659785807132721e-01
   - 2.3539969325065613e-01
   - 2.0810306072235107e-01
   - 1.2627227604389191e-01
   - 8.0759152770042419e-02
   - 6.4930714666843414e-02
   - 6.1364557594060898e-02
   - 2.1614919602870941e-01
   - 1.4714729785919189e-01

While reading .yml file I got the following error.

Error using ReadYamlRaw>load_yaml (line 78)
Java exception occurred:
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:51)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)

Error in ReadYamlRaw (line 42)
    result = load_yaml(filename, nosuchfileaction, treatasdata);


Error in ReadYaml (line 48)
    ry = ReadYamlRaw(filename, 0, nosuchfileaction, treatasdata);


Error in untitled (line 2)
 YamlStruct = ReadYaml(yaml_file);

I believe this error is due to large file size as I can read simple .yml file. Can someone help me to resolve this error. I have also read this post.

P.S: Here is .yml file

EDIT:
It works with below answer but I got the following error now. Once I remover %YAML:1.0. It works fine.

Error using ReadYamlRaw>load_yaml (line 78)
Java exception occurred:
while scanning a directive
 in "<string>", line 1, column 1:
    %YAML:1.0
    ^
expected alphabetic or numeric character, but found :(58)
 in "<string>", line 1, column 6:
    %YAML:1.0
         ^

    at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirectiveName(ScannerImpl.java:1028)
    at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirective(ScannerImpl.java:990)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchDirective(ScannerImpl.java:534)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:251)
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179)
    at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:198)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)

Error in ReadYamlRaw (line 42)
    result = load_yaml(filename, nosuchfileaction, treatasdata);


Error in ReadYaml (line 48)
    ry = ReadYamlRaw(filename, 0, nosuchfileaction, treatasdata);


Error in untitled (line 2)
 YamlStruct = ReadYaml(yaml_file);

Upvotes: 0

Views: 815

Answers (1)

Sam Roberts
Sam Roberts

Reputation: 24127

In MATLAB, select Preferences from the menu/toolstrip. Find the section MATLAB>General>Java Heap Memory, and increase the Java heap size.

You'll need to restart MATLAB after changing this setting for it to take effect.

Upvotes: 3

Related Questions