Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Squareing Matrix(?) in MATLAB

  1. Feb 19, 2008 #1
    Hello, I've got quick questions.
    1. When I have a matrix, x, and try to get different values for each x (given y = (x^2)+b),
    I get this error.

    ??? Error using ==> mpower
    Matrix must be square.

    2. x is [1x101] double according to MATLAB and I've had this problem when I was taking derivative as well. I've lost numbers throughout the derivative, which i understands.
    so x' = [1x100] and x'' = [1x99] and so forth.

    What's the best way to solve these problems.
    Thank you.
  2. jcsd
  3. Feb 19, 2008 #2
    Can you post your code? I don't really understand your question.
  4. Feb 19, 2008 #3
    >> x=sqrt(500/105);
    >> a=[0:0.1:100];
    >> b=[0:1:100];
    >> z=a/(2*(sqrt(3000*15)));
    >> p=x(sqrt(1-((z)^2)))
    ??? Error using ==> mpower
    Matrix must be square.

    this is not the direct problem but it's basically the same thing.
    Why am I getting this error?

    I will hold onto my second question for now.

    [edit] another question...

    >> x=A*(exp(-(z*wn*t)))*(sin(wd*t))
    ??? Error using ==> mtimes
    Inner matrix dimensions must agree.

    everything is numeric except t is in matrix...
    Last edited: Feb 19, 2008
  5. Feb 20, 2008 #4
    It looks like you are using the matrix power operator ^ where you should be using the array power operator .^ . The matrix power operator A^n multiplies the matrix A by itself n times, which means the number of columns in A must be equal to the number of rows in A, which means that A must be square (size(A) = [m x m] for some positive integer m). The array power operator A.^n raises each element of A to the nth power, and therefore has no restrictions on the dimensions of A.

    Once again, it looks like you are using a matrix operator where you should be using an array operator. Try (exp(-z*wn*t))) .* (sin(wd*t))
  6. Feb 20, 2008 #5
    thanks a lot! i've got another question...sorry.

    i am given that function and there are two independent variables, t and a, which i posted above. i am told that it's initial displacement is zero but it "dies out" after about t=2.
    so basically, after x has been graphed up to t<2 and when t hits 2 seconds mark, i think everything converges to zero i believe.

    i tried everything without using mfile but i couldnt figure out so i thought i should use mfile instead so i've retyped everything under...


    if 0=<t<2 (BTW, if i want less than equal to 0, i should use =< instead of <= right?)
    all the components that vary by a and b goes under if statement including equation of x

    that's what i've tried but it doesnt seem like i am getting what i wanted. it graphes entire 10s and under mfile, it states something like i can't use this, "0=<t<2", because it's in matrix form but i can't think of any other way to approact this problem.
    i've thought about while loop and etc. but it seems like that my if,while,and other statements are not working because of how t is in matrix.

    i really appreciate your help.
  7. Oct 15, 2009 #6
    Help with integrating function in Matlab

    Hi I'm trying to integrate a function func1 in Matlab but I keep getting errors I realy don't know what I'm doing wrong. Can anyone tell me?

    Here is the code Im using:

    function [ f1 ] = func1( E, Delta, kB, Temp )
    %func1: calculates integrand for eqn 1
    % Detailed explanation goes here

    Command line code:

    >> hbar=1.054E-34; Tdebye=420; h=6.626E-34; kB1= 1.38065E-23;
    >> Temp1=0.5;
    >> Delta1=0;
    >> a=hbar*fdebye;
    >> Q=quad(@(E1)func1(E1,0,1.38065E-23,0.5),-a,a)

    ??? Error using ==> mtimes
    Inner matrix dimensions must agree.

    Error in ==> func1 at 4

    Error in ==> @(E1)func1(E1,0,1.38065E-23,0.5)

    Error in ==> quad at 77
    y = f(x, varargin{:});
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook