Array operations in Matlab?????


by ichbinschneller
Tags: array, matlab, operations
ichbinschneller
ichbinschneller is offline
#1
Dec5-04, 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?
Phys.Org News Partner Science news on Phys.org
NASA's space station Robonaut finally getting legs
Free the seed: OSSI nurtures growing plants without patent barriers
Going nuts? Turkey looks to pistachios to heat new eco-city
enigma
enigma is offline
#2
Dec6-04, 10:12 AM
Emeritus
Sci Advisor
PF Gold
enigma's Avatar
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

for i=[1:length(A)]
     function(A(i));
end
or if A is 30x2 (or more)
for i=[1:length(A)]
     function(A(i,:));
end
if you want to take the square root, you can find it using the .^ operator, which raises each element to a power as opposed to the ^ which performs matrix multiplication

A.^(1/2)
ichbinschneller
ichbinschneller is offline
#3
Dec6-04, 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?

enigma
enigma is offline
#4
Dec6-04, 09:55 PM
Emeritus
Sci Advisor
PF Gold
enigma's Avatar
P: 1,817

Array operations in Matlab?????


Quote Quote by ichbinschneller
for i=[1:length(g1)]
     g2(i)=roots(g1(i));
end
What am I doing wrong? What code would yield the results I desrire?
You're not indexing the entire row.

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

g=[1,2,3,4
     6,7,8,9
    10,11,12,13
    14,15,16,17]
typing

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,
gerben
gerben is offline
#5
Dec7-04, 02:53 AM
P: 540
also, lose the [ and the ]
like this:

for i = 1:length(g1)
g2(i, :) = roots(g1(i, :));
end
enigma
enigma is offline
#6
Dec7-04, 03:48 PM
Emeritus
Sci Advisor
PF Gold
enigma's Avatar
P: 1,817
Quote Quote by gerben
also, lose the [ and the ]
like this:

for i = 1:length(g1)
g2(i, :) = roots(g1(i, :));
end
Works with or without. I usually leave them in.
gerben
gerben is offline
#7
Dec9-04, 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 Pre-allocation 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