help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: textscan wanted


From: Liam Groener
Subject: Re: textscan wanted
Date: Wed, 20 Oct 2010 18:52:02 -0700

On Oct 20, 2010, at 3:03 AM, Ben Abbott wrote:

> On Oct 20, 2010, at 1:55 PM, Ben Abbott wrote:
> 
>> On Oct 20, 2010, at 1:39 PM, Dr. Johannes Zellner wrote:
>> 
>>> 2010/10/20 Ben Abbott <address@hidden>
>>> On Oct 20, 2010, at 4:53 AM, Dr. Johannes Zellner wrote:
>>> 
>>>>> Hi,
>>>>> 
>>>>> I've a bunch of matlab files which use textscan.
>>>>> 
>>>>> I don't want to replace all textscan calls with something like fscanf but 
>>>>> I'd rather like to have an octave function which implements textscan().
>>>>> 
>>>>> Does anyone have a textscan implementation?
>>>>> 
>>>>> regards,
>>>>> 
>>>>> --
>>>>> Johannes.
>>>> 
>>>> I've opened a ticket in the bug tracker.
>>>> 
>>>>      https://savannah.gnu.org/bugs/index.php?31380
>>>> 
>>>> For now, have you looked at using textread() instead? Unfortunately, 
>>>> textread() is not fully compatible with the ML version.
>>>> 
>>>> The syntax for ML's textscan is ...
>>>> 
>>>> C = textscan (fid, 'format')
>>>> C = textscan (fid, 'format', N)
>>>> C = textscan (fid, 'format', 'param', value)
>>>> C = textscan (fid, 'format', N, 'param', value)
>>>> C = textscan (str, ...)
>>>> [C, position] = textscan (...)
>>>> 
>>>> If you don't require the input "N", it should be straight forward to 
>>>> modify scantext() to implement textscan(). A quick fix would support the 
>>>> limited syntax below.
>>>> 
>>>> C = textscan (fid, 'format')
>>>> C = textscan (fid, 'format', 'param', value)
>>>> C = textscan (str, ...)
>>>> 
>>>> Would that be useful to you?
>>>> 
>>>> Ben
>>> 
>>> Ben,
>>> 
>>> thanks for the quick response.
>>> It would be more useful, if it would also allow the input parameter N.
>>> 
>>> regards,
>> 
>> Ok. Can you provide a simple example with both an input file and a script 
>> that uses textscan() with the parameter N to read some data?
>> 
>> Ben
> 
> I found some simple examples on the web, and made an attempt at implementing 
> the function.
> 
> I'd appreciate it if you can try the attached textscan.m and let us know if 
> it works for you.
> 
> Ben
> 
> <textscan.m>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave

Hi Ben,

I downloaded the textscan.m and strread.m from your emails and tried the 
following simple script from a Matlab book using Octave 3.2.3:

B = [30 40 60 70];
fid = fopen('myoutput','w');
fprintf(fid,'%g miles/hr = %g kilometers/hr\n',[B;8*B/5]);
fclose(fid);

fopen('myoutput','r');
X = fscanf(fid,'%f miles/hr = %f kilometers/hr')
C = textscan(fid,'%f miles/hr = %f kilometers/hr')
fclose(fid);

This was the output:

X =

    30
    48
    40
    64
    60
    96
    70
   112

error: A(I): Index exceeds matrix dimension.
error: called from:
error:   /Users/liamg/mFiles/textscan.m at line 60, column 3
error:   /Users/liamg/mFiles/tst.m at line 8, column 3

The file "myoutput" was written correctly.

Liam




reply via email to

[Prev in Thread] Current Thread [Next in Thread]