MATLAB Answers

Making a nice and small 'Loding Data' Script

3 views (last 30 days)
Wenzel Gaßner
Wenzel Gaßner on 10 Apr 2020
Commented: Rik on 12 Apr 2020
Hey,
I am currently trying to write a script that should be at the beginning of a larger one.
The user would run the script and be asked by the program:
-Where is the file ?
-Filename?
-other (for later)?
The script should then load the requested file into Matlab. It is measurement data in a .txt file.
I searched a lot and tried it like this:
But it doesn't work as hoped
box = msgbox('Hello, blablabla');
%set(box, 'position', [500 500 200 100]);
pause(1.2)
Folder = uigetdir();
Folder_string=string(Folder);
prompt = {'Filename:','other:'};
dlgtitle = 'blablabla';
%size of the window
width = 75;
height = 1;
dims = [height, width];
definput = {'Filename','other'};
answer = inputdlg(prompt,dlgtitle,dims,definput);
Dataname=string(answer(1,1));
other=string(answer(2,1));
%% Import
% Use Var: 'Dataname' and 'Folder' for Import:
Data = load(fullfile(Folder_string,Dataname));
After choosing the path an the filename an error appears. :(
"Error using load Number of columns on line 3 of ASCII f
ile C: \ bla \ bla \ bla \ bla \ bla \ filename must be the same as previous lines.
Error in dialog (line 45) Data = load (fullfile (Folder_s, Dataname));"
Now i dont know what to do......

  6 Comments

Show 3 older comments
Wenzel Gaßner
Wenzel Gaßner on 10 Apr 2020
That would be incredibly friendly.
Here is the .txt file
Data from row 6 downwards ~ row 605 are relevant.
Thank you very much
Rik
Rik on 10 Apr 2020
That looks like a very strange file. It looks like 3 files were merged.
You can select the lines you're interested in like this:
file_contents=fileread('SBA15_Data.txt.txt');
file_contents=strsplit(file_contents,'\n');
file_contents=file_contents(6:605);
Then you only need to parse them to numeric values.
Wenzel Gaßner
Wenzel Gaßner on 10 Apr 2020
Thank you I'll try it like this tomorrow!

Sign in to comment.

Accepted Answer

Rik
Rik on 11 Apr 2020
The code below should read your file and convert it to a double array.
file_contents=fileread('SBA15_Data.txt.txt');
file_contents=strsplit(file_contents,'\n');
file_contents=file_contents(6:605);
parse_val=@(str) cellfun(@str2double,strsplit(strtrim(str),' '));
x=reshape(file_contents,[],1);
x=cellfun(parse_val,x,'UniformOutput',false);
x=cell2mat(x);

  2 Comments

Wenzel Gaßner
Wenzel Gaßner on 12 Apr 2020
OK thanks,
how would I have to change your script to open the file from another folder location?
I let the user choose the location and save it in a variable:
Folder = uigetdir();
Rik
Rik on 12 Apr 2020
file_contents=fileread(fullfile(Folder,'SBA15_Data.txt.txt'));

Sign in to comment.

More Answers (0)

Products


Release

R2019a

Translated by