[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: automation and for loops
From: |
Jonas Amhest |
Subject: |
Re: automation and for loops |
Date: |
Wed, 1 Jul 2009 11:30:29 -0700 (PDT) |
nevermind, I got it!
thank you for you help though.
i immensely appreciate it. now i can finish up the rest of this...
--Mike
--- On Wed, 6/24/09, James Sherman Jr. <address@hidden> wrote:
> From: James Sherman Jr. <address@hidden>
> Subject: Re: automation and for loops
> To: "Jonas Amhest" <address@hidden>
> Cc: "octave" <address@hidden>
> Date: Wednesday, June 24, 2009, 10:24 PM
> Instead of modifying the code that
> works, I'd break it off into a separate function that
> accepts a filename and returns the data variable.
> Something like:
>
> in file called read_data_file.m:
>
> function data = read_data_file(filename)
>
> data = [];
>
> fid = fopen(filename);
>
> <rest of your function>
> return;
>
> then you can just call this function in your for loop:
>
> files=dir('*.txt');
>
> for i=1:length(files)
>
> all_data{i} = read_data_file(files(i).name);
>
> end
>
> where all_data is called a cell array. Basically, you can
> treat it like a normal array when accessing elements just
> use {} instead of ().
>
> Hope this helps.
>
> On Wed, Jun 24, 2009 at 6:07 PM,
> Jonas Amhest <address@hidden>
> wrote:
>
>
>
> hi all,
>
>
>
> i'm using octave 3.2 on windows xp.
>
> i have a lot of files i need to load and save, but it has
> to be automated.
>
> the files have headers, data, and footers. i know how to
> open these but i want to incorporate a loop where the file
> is loaded and saved to a separate file or even just have the
> data saved to a separate variable through each loop.
>
>
>
>
> here're are two example files:
>
>
>
> new00.txt
>
>
>
> asdf
>
> asdf
>
> 1385.00 5585
>
> 2446.34 95456.74
>
> 3234.35 2343456.04
>
> 4564 53456345
>
> 5797 83456
>
> asdf
>
>
>
>
>
> and
>
>
>
> new01.txt
>
>
>
>
>
> asdf
>
> asdf
>
> 1385.00 5585
>
> 2446.34 95456.74
>
> 3234.35 2343456..04
>
> 4564 53456345
>
> 5797 83456
>
> asdf
>
>
>
>
>
> to open the files i'm using this code so that it skips
> the headers and footers and makes a matrix out of my data:
>
>
>
> data = [];
>
> fid = fopen('ref00.txt');
>
> line_string = fgetl(fid); # reads one line of the file
> into a string
>
> while (line_string != -1) # makes sure its not eof
>
> [line_data, count] = sscanf(line_string, '%f
> %f'); # tries to parse string; f=decimal notation
>
> if (count == 2) # if its successful (finds 2
> integers)
>
> data = [data;line_data']; # append it to your
> data variable
>
> end
>
> line_string = fgetl(fid);
>
> end
>
> fclose(fid);
>
>
>
>
>
> my matrix is saved into the variable data. i was trying to
> put the code above into a for loop that saves new00.txt into
> 'data00' and new01.txt into 'data01'
>
> based off of this code:
>
>
>
> files=dir('*.txt');
>
> for i=1:length(files)
>
> eval(['load ' files(i).name '
> -ascii']);
>
> end
>
>
>
>
>
>
>
> my attempt at this was:
>
>
>
> for i=1:length(files)
>
> fid = fopen(files);
>
> line_string = fgetl(fid); # reads one line of the file
> into a string
>
> while (line_string != -1) # makes sure its not eof
>
> [line_data, count] = sscanf(line_string, '%f
> %f'); # tries to parse string; f=decimal notation
>
> if (count == 2) # if its successful (finds 2
> integers)
>
> data(i) = [data;line_data']; # append it to
> your data variable
>
> end
>
> line_string = fgetl(fid);
>
> end
>
> fclose(fid);
>
> end
>
>
>
> but i keep getting an error about double_value () : :wrong
> type argument 'struct'
>
>
>
>
>
>
>
> any help is greatly appreciated!
>
>
>
> -Mike
>
>
>
>
>
>
>
>
>
> _______________________________________________
>
> Help-octave mailing list
>
> address@hidden
>
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
>
>
>
>