save a variable nameing it after a string

Emil asked on 3 Feb 2012
Latest activity: Answer by Sean de Wolski on 3 Feb 2012

I have several matrices that I would like to save in a loop. I've tried to read all the save documents but it doesnt seam to work. I can save the matrix using a string and it becomes like A150.mat but I also want the matrix inside to be called that as well. The problem is that save() saves the matrix after what its called so when I get the name as a string(imported from a document outside matlab) its impossible to give the matrix that name. Thanks for any help

0 comments

Tags

Products

    2 answers

    Kevin Holst answered on 3 Feb 2012
    Accepted answer

    can you not import the string prior to saving? something like:

    ...
    str = importFun(file);
    eval([str ' = matToSave;'])
    save([str '.mat'],str)
    eval(['clear ' str])
    clear str
    

    3 comments

    Kevin Holst on 3 Feb 2012

    I should add, thanks to Sean for the reminder about the dangers of eval, that if you somehow get str = 'clear all', you're hosed, so you might want to put a check in there to make sure that the str is actually a variable.

    exist(str,'var')

    Also the last two lines should just be:
    clear(str,'str')

    Jan Simon on 4 Feb 2012

    There can be more evil problems then "eval('clear all')":
    str = 'x; system(''format C:'')'
    eval(['clear ', str])
    ;-)

    Emil on 6 Feb 2012

    Thank you, it worked perfectly! :)

    Sean de Wolski answered on 3 Feb 2012

    Either This or This

    0 comments

    Contact us at files@mathworks.com