Register to reply

Array operations in Matlab?

by ichbinschneller
Tags: array, matlab, operations
Share this thread:
ichbinschneller
#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
Scientists discover RNA modifications in some unexpected places
Scientists discover tropical tree microbiome in Panama
'Squid skin' metamaterials project yields vivid color display
enigma
#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
#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
#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
#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
#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
#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