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