12 views (last 30 days)

Hello,

its a simple question, but i havent managed to solve it:

I have to sample a vector and the matlab doesn't understandme and prompts:

??? Error using ==> mtimes

Inner matrix dimensions must agree.

I wanted to sample a SUM (cos(2*pi*d*A) )where A is a vector of many degrees value, so I have:

function sample(d)

A = [1,2,3,....]

SUM (cos(2*pi*d*A) )

end

and the input is:

d=[1:1:20]

How can I make understand first vector is a sampling and second is a vector of values? (The idea is plotting (sample,d) )

The fact is that the expresion of the vector is a real for each value of d so I should expect something returning results of the SUM of different d's like:

Columns 1 through 11

1 2 3 4 5 6 7 8 9 10 11

Columns 12 through 20

12 13 14 15 16 17 18 19 20

But it doesn't understand each

Thank you

Dr. Seis
on 25 Feb 2013

Edited: Dr. Seis
on 25 Feb 2013

Try this:

d = 1:20;

A = [24,34,56,66,86];

plot(d,arrayfun(@(x)sum(cos(2*pi*A*x)),d))

Obviously, in this simple case, the answer will always be 5 for all d since we are dealing with integer multiples of 2*pi (and there are only 5 elements in A), but I think this is what you are looking for.

Image Analyst
on 24 Feb 2013

Edited: Image Analyst
on 24 Feb 2013

What is SUM? Is it a custom function you wrote, or an array of yours, because it's not the built-in MATLAB sum() function because MATLAB is case sensitive.

Perhaps you meant something like this:

A = 1:20

d=[1:1:20]

cosA = cos(2*pi*d.*A)

theSum = sum(cosA)

Note the .* instead of * between d and A to do an element by element multiplication, not a matrix multiplication like you were trying to do.

Image Analyst
on 26 Feb 2013

Alfonso, you need to read the getting started guide. You can't just type all that code into a single m-file because you can't have a script followed by a function in the same file. The main program can be in one m-file, and the other function in another m-file, OR if you want them to be in the same file, then you must have a function name at the beginning of the file with the same name as the m-file. For example if it's test.m, then your code would be

function test()

dMain = [1:1:20]

for k = 1 : length(dMain)

% Call sample() once for each value of d

theSumMain(k) = sample(dMain(k));

end

theSumMain % Print to command window

function theSum = sample(d)

A = 1:20;

cosA = cos(2*pi*d.*A);

theSum = sum(cosA);

If it's like that they can all be in the same m-file. I guess I assumed that you knew this.

Sign in to comment.

Azzi Abdelmalek
on 24 Feb 2013

Edited: Azzi Abdelmalek
on 24 Feb 2013

Maybe you mean indexing

v=[2 3 5 4 10 20]

d=[2 3 1 4 5 6]

new_v=v(d)

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 7 Comments

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131968

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131968

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131979

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131979

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131983

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131983

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131985

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131985

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131987

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131987

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131988

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131988

## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131992

⋮## Direct link to this comment

https://es.mathworks.com/matlabcentral/answers/64770-sampling-with-vectors-at-the-same-time#comment_131992

Sign in to comment.