Writing a Matlab function for the first time
    4 views (last 30 days)
  
       Show older comments
    
This is th first time I'm writing a Matlab function.I have written several FORTRAN programs earlier but not Matlab.
Now, my program essentially does (or I want it to do) the follwoing:
1) The function takes 3 arguments which are vectors. The 3 vectors are Params,X,Y
2) The program (or function) first gets the size of vectors X and Y respectively and assigns to variables xrows and yrows respectively
3) Now: actually the vectors X and Y are concatenated vectors. That is there may be 2 or more vectors (X1,X2,Y1,Y2,..) which are concatenated into X and Y the arguments
4) The program wants to split the vectors X and Y into X1,X2,Y1,Y2,X3,....
5) For the time beinmg ,I have defined the total number of concatenated vectors as total_sets inside the function.
6)I have written a code to get hthese concatenated vectors X1,X2,Y1,Y2 as below.Can anyone help me to do the encessary corrections to the code? I shall be grateful.
    function [ error ] = ConcatenatingAllDataSets( Params,X,Y)
    %UNTITLED Summary of this function goes here
    %   Detailed explanation goes here
    %Below we get the number of rows for the vector X
    xrows = size(X,1)
    %Below we get the number of rows for the vector Y
    yrows=size(Y,1)
    %Below we define the total number of sets that are to be concatenated
    %So, if total sets =1, it means that we will have one set of epsilon's
    %If total sets is equal to 2, we will have 2 sets of epsilons
    %Similarly, if total sets is equal to 
    total_sets=2
    start_value=0
    k=total_sets
    for j=1,total_sets
    for i=start_value+1,1,(xrows/k)
        epsilon(j,i)=X(i);
        sigma(j,i)=Y(i)
    end
    k=k-1
    end
    %Above we have separated concatenated values - X and Y separated into
    %epsilon and sigma
    end
0 Comments
Accepted Answer
  Andrew Newell
      
 on 6 Mar 2012
        I think what you are trying to do is convert a row vector into a matrix with total_sets number of rows. You can do this with two commands:
function [epsilon,sigma] = concatenatingAllDataSets(total_sets,X,Y)
epsilon = reshape(X,total_sets,[]);
sigma = reshape(Y,total_sets,[]);
(edited to add function statement)
6 Comments
  Andrew Newell
      
 on 6 Mar 2012
				Assuming you already have your vectors X and Y, you should run
 total_sets = 2;
 [epsilon,sigma] = concatenatingAllDataSets(total_sets,X,Y)
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
