Register to reply 
Array operations in Matlab? 
Share this thread: 
#1
Dec504, 08:26 PM

P: 2

Is it possible to apply operations to the rows of a matrix as an array? Such as I have a matix A which is 30 rows by 1 column and I want to treat each row as a vector such that I can solve for the polynomial roots of each row using the roots comand (treating each row as its own equation and the matrix A a system of eqautions)?
Also would it be possible to take the square roots of each row of a same size matrix. Meaning say I had the same size matrix and I want to take the square root of each row and have the output be a matrix of the same size just with the values of those square roots? 


#2
Dec604, 10:12 AM

Emeritus
Sci Advisor
PF Gold
P: 1,817

Hi, Iamfaster
Welcome to PF! If you need to perform a function on each row of a matrix like function(A), where A is a 30x1 vector, I think you'll have to break it up and write a for loop



#3
Dec604, 06:35 PM

P: 2

Thanks, I am getting closer now but I still cant seem to enter the code in the right form.
Say I have a matrix g1= 5 9 8 4 7 6 1 2 8 and I want a matrix g2= roots of each row as if each row was a vector consisting of the coeficients of a polynomial. I have tried using code such as for i=[1:length(g1)] g2(i)=roots(g1(i)); end but I keep getting errors. What am I doing wrong? What code would yield the results I desrire? 


#4
Dec604, 09:55 PM

Emeritus
Sci Advisor
PF Gold
P: 1,817

Array operations in Matlab?
g1(1) doesn't have any meaning for a m by n matrix when n>1. If you want to reference a single term, you need to put in the entire address lke so: g1(1,2) to reference the first row, second column. If you want to reference the entire row, you need to put in the : operator like so: g1(1,:) Just using : by itself is "shorthand" for explicitly defining the starting and ending conditions. If your matrix g is 4x4
a=g(2,2:3) will give the result a=[7,8] b=g(:,1) will give the result b=[1;6;10;14] c=g(3,1:4) will give the result c=[10,11,12,13] and d=g(3,:) will give the same result as c. d=[10,11,12,13] Hope that helps, 


#5
Dec704, 02:53 AM

P: 540

also, lose the [ and the ]
like this: for i = 1:length(g1) g2(i, :) = roots(g1(i, :)); end 


#6
Dec704, 03:48 PM

Emeritus
Sci Advisor
PF Gold
P: 1,817




#7
Dec904, 01:25 AM

P: 540

yes it works because [1:5] evaluates to: 1, 2, 3, 4, 5 (you could say: for i = [1,4,18])
but you can tell the loop that you want "it" done for the numbers 1 through 5 instead of telling it that you want "it" done for the numbers 1, 2, 3, 4 and 5. (I guess you leave them in because of similarity with other programming languages that usually have brackets there, like in C/C++: for(i=1; i<5; i++) ) 


Register to reply 
Related Discussions  
Matlab: How to apply filters to and ECG signal using matlab?  Math & Science Software  2  
MATLAB Array Preallocation help!  Math & Science Software  4  
Converting from an array of function values to coordinate array of different length  Programming & Computer Science  3  
Read a book of analysis  General Math  3  
Matlab char array help please?  Math & Science Software  2 