1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Matlab code but i'm having problems puting in a loop

  1. Apr 4, 2010 #1
    Hi. i have seen similar questions on here but cant quite get them to apply to my problem

    i have wrote some matlab code but i'm having problems puting in a loop

    heres my code
    -----------------------------------------------------------------------------------------

    clear
    clc
    for i=1:10
    name=['C:\Documents and Settings\john\My Documents\matlabfiles\t2\p',num2str(i),'t2a.asc'];
    load(name);

    end
    clear name

    track1=findvarible(p1t2a,31);
    track2=findvarible(p2t2a,31);
    track3=findvarible(p3t2a,31);
    track4=findvarible(p4t2a,31);
    track5=findvarible(p5t2a,31);
    track6=findvarible(p6t2a,31);
    track7=findvarible(p7t2a,31);
    track8=findvarible(p8t2a,31);
    track9=findvarible(p9t2a,31);
    track10=findvarible(p10t2a,31);
    --------------------------------------------------------------------------------
    i would like to put the last block into a loop

    the files pit2a are arays of varying size (x,66). i want to take one column of interest out
    i have tried puting these values into an aray 'track' like this.

    ---------------------------------------------------------------------------
    % track=zeros(85,66)
    % for i=1:10
    % track(:,i)=findvarible(eval(['p',int2str(i),'t4a']),31);
    % end
    --------------------------------------------------------------------------
    this caused me problems because the variables were of different sizes so i tried pre defining the aray to the biggest varible but that didnt work


    the function findvarible is(see below). its in there for an adition i intend to add later
    -------------------------------------------------------------------
    function [ varible ] = findvarible( filename,var )
    varible=filename(:,var);
    end
    --------------------------------------------------------------------

    i have tried using a lop to do it like the top bit automaticaly but i just cant get it to work.


    so anyways. any help that puts me in the right direction to geting that top block into a loop would be helpfull

    hope that wasnt to wishywashy
     
  2. jcsd
  3. Apr 4, 2010 #2
    Re: matlab

    tried this

    %track(:,1)=p1t4a(:,31);% this line checks it can work works

    for i=1:10
    name=['p',int2str(i),'t4a']
    track(:,i)=name(:,31)
    end



    got this error

    ??? Index exceeds matrix dimensions.

    Error in ==> test4compare at 14
    track(:,i)=name(:,31)
     
  4. Apr 4, 2010 #3
    Re: matlab

    i think i already mentioned something similar to this

    for i=1:10
    name=['p',int2str(i),'t4a']
    track(:,i)=eval(['p',int2str(i),'t4a(:,31)'])
    end

    the first one runs then i get an error saying
    ??? Subscripted assignment dimension mismatch.

    Error in ==> test4compare at 14
    track(:,i)=eval(['p',int2str(i),'t4a(:,31)'])
     
  5. Apr 4, 2010 #4
    Re: matlab

    for i=1:10
    name=['p',int2str(i),'t4a']
    eval(['track', int2str(i) '=p',int2str(i),'t4a(:,31)'])
    end

    ok i have a working loop. i am happy. if you have a better solution to the problem please still post
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook