help-octave
[Top][All Lists]
Advanced

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

Re: How do get a return value from a subroutine into the workspace?


From: Henry F. Mollet
Subject: Re: How do get a return value from a subroutine into the workspace?
Date: Fri, 07 May 2004 09:46:13 -0700
User-agent: Microsoft-Entourage/10.1.1.2418

Hamish,
Thanks. Problem is that I did not understand Paul's reply. I've used help
and found
octave:7> help assignin
assignin is a built-in function

 - Built-in Function:  assignin (CONTEXT, VARNAME, VALUE)
     Assign VALUE to VARNAME in context CONTEXT, which may be either
     `"base"' or `"caller"'.

It's far too terse for me to understand.  For the time being it is
copy/paste using editor to get intermediate results into the workspace.

I should add that the program that I'm using has a total of about 2 dozen
function calls (about 5 in the main-function) and runs to completion after I
made the necessary changes so it would run in Octave with Paul's and other's
help. However, now that it runs, I don't want to modify anything unless I
understand. All I wanted to do is to check on some intermediate results. My
own programs are scripts and are indeed getting too long and too difficult
to follow. The use of functions is called for although at least everything
is in the workspace.
Henry


on 5/6/04 2:19 PM, Hamish Allan at address@hidden wrote:

> Henry,
> 
> I believe Paul answered your question already. You're not using
> assignin('base')...
> 
> http://www.octave.org/mailing-lists/help-octave/2004/1156
> 
> regards,
> Hamish
> 
> On May 6, 2004, at 22:13, Henry F. Mollet wrote:
> 
>> I forgot to add definition of matlam.m:
>> function [lambda,a,surv,fecund,cuts] = matlam(dat,numclass);
>> cut
>> disp (['within matlam.m printing matrix that is called a  ' ]) % my
>> addition
>> April 2004
>> a = surv + fecund % removed ";" to get "a"  printed to screen
>> % but why does matrix "a" not become available in workspace?
>> cut
>> *****
>> I just don't understand. I thought that I had set up the function
>> call, so
>> that the matrix "a" would become available in the workspace but all I
>> can
>> manage is to print it to the screen. If I type a=1 at the octave
>> prompt, "a"
>> gets printed to the screen and "a" is available in the workspace. The
>> same
>> principle seem to work for the main-function but it appears to be
>> different
>> for a call to a sub-function within the main-function. I must be
>> missing
>> something basic but cannot figure out what it is.
>> Henry
>> 
>> octave:8> load data14thTry200IndApr212004
>> octave:9> whos
>> *** local user variables:
>> prot  type                       rows   cols  name
>> ====  ====                       ====   ====  ====
>>  rwd  matrix                      200      7  data1
>> 
>> octave:12> [grow_rates, kmat, mshpts] = lambda (data1, [],[],[],[],[]);
>> octave:13> whos
>> *** currently compiled functions:
>> cut
>> *** local user variables:
>> prot  type                       rows   cols  name
>> ====  ====                       ====   ====  ====
>>  rwd  matrix                      200      7  data1
>>  rwd  matrix                        1      3  grow_rates
>>  rwd  matrix                      150    150  kmat
>>  rwd  matrix                      150      1  mshpts
>> 
>> % grow-rates, kmat, and mshptds are in workspace as expected. *So far
>> so
>> good*.
>> 
>> Within lambda.m there's a call to matlam.m and I've modified matlam.m
>> so it
>> will print "a" to the screen and it does:
>> 
>> within matlam.m printing matrix that is called a
>> a =
>> 
>>   0.70000  0.00000  0.00000  0.95000  1.35000
>>   0.22500  0.55000  0.00000  0.00000  0.00000
>>   0.00000  0.40000  0.82500  0.00000  0.00000
>>   0.00000  0.00000  0.12500  0.92500  0.00000
>>   0.00000  0.00000  0.00000  0.05000  0.92500
>> 
>> The call for matlam.m in lambda.m was modified as follows
>> %mlam = matlam(dat,numclass);
>> [mlam,a] = matlam(dat,numclass) % added 2nd output parameter and
>> deleted ";"
>> % tried several things but could not get "a" into workspace.
>> 
>> grow_rates = [ilam, dlam, mlam]
>> % grow_rates is using mlam (first return value in same call to
>> matlam.m and
>> growrates becomes available in the workspace. But when trying the same
>> for
>> "a" it does not work:
>> 
>> A_matrix = a; % Trying to get matrix called "a" into workspace
>>             disp ("A_matrix=")
>>             disp (A_matrix)
>> 
>> 
>> 
>> 
>> on 5/5/04 8:14 PM, Joe Koski at address@hidden wrote:
>> 
>>> on 5/5/04 8:38 PM, Henry F. Mollet at address@hidden wrote:
>>> 
>>>> I'm running a main program (function) with a call to a subprogram
>>>> (another
>>>> function) that I have modified (removing ";" after the call)  so
>>>> that the
>>>> return value ,a matrix called "A", will get printed to the screen.
>>>> How do I
>>>> get "A" into the workspace? I have to copy/paste "A" into an editor,
>>>> save it
>>>> as "A", then load "A" into the workspace but there must be an
>>>> easier/better
>>>> way to accomplish this?  The return values of the main program are
>>>> in the
>>>> workspace after running the program and they are also printed to the
>>>> screen
>>>> if I remove the ";" after the call at the octave prompt.
>>>> Henry
>>>> 
>>> You set it up in the function call. For example, here's the first
>>> line of a
>>> function
>>> 
>>> function [A,f,tt] = hhspectrum(imf,t,l,aff)
>>> 
>>> And here is the line that gets the values A,f,tt back to the calling
>>> program
>>> 
>>> [A,f,tt] = hhspectrum(imf,t,l,0);
>>> 
>>> In the calling program, you could change the names to be different
>>> from
>>> those in the function, if desired, e. g.,
>>> 
>>> [B,g,ttt] = hhspectrum(imf2,tx,m,0);
>>> 
>>> It's the position in the list that matters, not the actual variable
>>> name.
>>> 
>>> Joe
>>> 
>>> 
>>> 
>>> 
>>> 
>>> -------------------------------------------------------------
>>> Octave is freely available under the terms of the GNU GPL.
>>> 
>>> Octave's home on the web:  http://www.octave.org
>>> How to fund new projects:  http://www.octave.org/funding.html
>>> Subscription information:  http://www.octave.org/archive.html
>>> -------------------------------------------------------------
>> 
>> ------ End of Forwarded Message
>> 
>> 
>> 
>> -------------------------------------------------------------
>> Octave is freely available under the terms of the GNU GPL.
>> 
>> Octave's home on the web:  http://www.octave.org
>> How to fund new projects:  http://www.octave.org/funding.html
>> Subscription information:  http://www.octave.org/archive.html
>> -------------------------------------------------------------
>> 
>> 



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

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