Date: Mar 21, 2014 1:02 PM
Author: Vitor Andrade
Subject: Re: Matrix dimensions must agree.

"Steven Lord" <Steven_Lord@mathworks.com> wrote in message <lghfra$4o4$1@newscl01ah.mathworks.com>...
>
> "Vitor Andrade" <vitor.luiz.de.andrade@gmail.com> wrote in message
> news:lghenc$13g$1@newscl01ah.mathworks.com...

> > "Vitor Andrade" wrote in message
> > <lgfgag$34p$1@newscl01ah.mathworks.com>...

> >> dpb <none@non.net> wrote in message <lgfaqk$820$1@speranza.aioe.org>...
> >> > On 3/20/2014 12:57 PM, Vitor Andrade wrote:
>
> *snip*
>

> > Sr. When I was analyse other data, now, I have a new problem, the matrices
> > with different sizes;
> > a =
> > [0.400000000000000,35139.0781250000;0.933333333333333,32986.5703130000;1.50000000000000,30094.9824220000;2.26905,25000.00000;2.50000000000000,23203.3417970000;3.0666666666666,19190.0585940000;3.60000000000000,
> > 5137.0966800000;4.16666666666667,10913.9882810000;4.80000000000000,6466.71191400000;5.36666666666667,2564.06420900000;5.86666666666667,377.535583000000]
> > size(a)
> > 11x2
> >
> > b =
> > [0.633333333333333,34091.8632810000;1.23333333333333,31666.7167970000;1.73333333333333,28622.0957030000;2.23333333333333,25087.7421880000;2.76666666666667,21232.4296880000;3.33333333333333,17193.9140625000;3.86666666666667,13042.4101560000;4.46666666666667,8754.32812500000;5.10000000000000,4451.73877000000;5.66666666666667,1339.44116200000]
> > size(b)
> > 10x2
> >

> >>>x = length(a);
> >>>y = length(b);

>
> You shouldn't really use LENGTH on matrices, because you can't be certain
> that it's telling you what you want to know. [Both a and a' have the same
> LENGTH, for example, but very different numbers of rows.] But you're
> interested in the number of rows each of a and b have. Instead, use SIZE to
> get the size of the matrix _in a specific dimension._
>
> x = size(a, 1); % number of rows in a
> y = size(b, 1); % number of rows in b
>

> >>>
> >>> if x > y

> > a(y+1:end)=[];
>
> This is an indexing technique known as linear indexing as described in the
> section with that name on this page:
>
> http://www.mathworks.com/help/matlab/math/matrix-indexing.html
>
> Instead you want to use subscripted indexing, as described in the "Accessing
> Multiple Elements" section on that same page.
>

> > else
> > if y > x
> > b(x+1:end)=[];
> > end
> > end

>
> I wouldn't use this approach; I'd instead select the elements to keep. It
> avoids the IF and ELSEIF statements at the expense of a call to MIN:
>
> minRows = min(x, y);
> a = a(1:minRows, :);
> b = b(1:minRows, :);
>

> > However, I expected to find:
> > a =
> > [0.400000000000000,35139.0781250000;0.933333333333333,32986.5703130000;1.50000000000000,30094.9824220000;2.26905,25000.00000;2.50000000000000,23203.3417970000;3.0666666666666,19190.0585940000;3.60000000000000,
> > 5137.0966800000;4.16666666666667,10913.9882810000;4.80000000000000,6466.71191400000;5.36666666666667,2564.06420900000];
> >
> > And 'b' were equal.
> >
> > But my result was:
> >
> > a =
> > [0.4000,0.9333,1.5000,2.0000,2.5000,3.0667,3.6000,4.1667,4.8000,5.3667];

>
> Yes, because you treated a as though it were a vector.
>

> > You can help me? Please?
> >
> > I hope your answer. Thanks so much!

>
> Based on the questions you've been asking, I'm guessing you're fairly new to
> MATLAB or that it's been a while since you last used it. Is that the case?
> If so, I recommend you go through the Getting Started documentation. In my
> opinion it provides a good introduction or refresher on the basics of
> working with MATLAB, including indexing into arrays. If you open the
> documentation using the DOC function:
>
> doc
>
> and select MATLAB, you should see something that looks like this page in the
> documentation browser:
>
> http://www.mathworks.com/help/matlab/index.html
>
> "Getting Started" is right above the Language Fundamentals section.
>
> --
> Steve Lord
> slord@mathworks.com
> To contact Technical Support use the Contact Us link on
> http://www.mathworks.com



Thanks Sr. Steve Lord. I'll read this section carefully not to give more work for you.
So thanks so much!
Sincerely