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 Logical 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!