error when call function

1 visualizzazione (ultimi 30 giorni)
Koen
Koen il 30 Ott 2014
Commentato: Adam il 30 Ott 2014
hello,
I use matlab for excercises on the university. I declare a function 'benadering_four' and when I ask for benadering_four(0) (so 0 put in the function) then it works but when I put a vector in the function (in the code, benadering_four(xx) ) then it gives me the error:
*Error using * Inner matrix dimensions must agree.
Error in @(y)[1,cos([1:floor(n/2)]*y),sin([1:floor(n/2)]*y)]
Error in @(y)Fourier(pi*y)*coef_four*
xx = -1:0.001:1;
n = 9;
coef_four = 1/pi*[pi*atan(5)/5; 1.08104; .552133; .30444; .157123; 0; 0; 0; 0]
Fourier = @(y) [1 cos([1:floor(n/2)]*y) sin([1:floor(n/2)]*y)]
benadering_four = @(y) Fourier(pi*y)*coef_four
benadering_four(0)
benadering_four(xx)
I doesn't understand why it works with an number and why it doesn't work with a vector. Can someone help me?

Risposta accettata

Adam
Adam il 30 Ott 2014
Modificato: Adam il 30 Ott 2014
cos([1:floor(n/2)]*y
will only be valid syntax for y being a vector in very specific circumstances - i.e. if they are the same length and one is a row vector, the other is a column vector. Depending which way round they are in that case you either get a scalar result or a square matrix result.
In all other cases you get a syntax error because you cannot do matrix multiplication (or indeed element-wise multiplication) on two arbitrary vectors of different lengths.
In this case I don't know what your expectations would be from passing a vector in. Do you expect a 3-element vector out? If so then y needs to be a column vector of length n.
  4 Commenti
Koen
Koen il 30 Ott 2014
Modificato: Koen il 30 Ott 2014
I thought I would get the following: a matrix A of size (2001, 9) (2001 is the size of xx) with
A =[1 cos(xx(1)) cos(2*xx(1)) ... sin(4*xx(1));
1 cos(xx(2)) cos(2*xx(2)) ... sin(4*xx(2));
...
1 cos(xx(2001)) cos(2*xx(2001)) ... sin(4*xx(2001))]
How do I get this?
Adam
Adam il 30 Ott 2014
Try transposing xx or whatever you are passing in.
You can do matrix multiplication if you have a row vector and column vector but not two of the same.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by