# Error while using a function instead of a .csv file

1 view (last 30 days)

Show older comments

n = 5:40; %these are the limits of the function

c=2*n; %the function

a = (1-0.7)/(1-(0.7)^5);

w=a*(0.7).^[0:4];

for k = n

avg(k) = sum(fliplr(w)'.*c(k-4:k)); %this is the part where the error occurs

end

plot(n,c(5:40),':o');

hold on

plot(n,avg(5:40),'-x');

I get an error saying "Unable to perform assignment because the left and right sides have a different number of elements." when I run the code using the function (c=2*n) , but if I use a .csv file with the exact same values, instead of the function, the code works perfectly.

##### 2 Comments

Riccardo Scorretti
on 2 May 2022

### Answers (1)

Riccardo Scorretti
on 2 May 2022

Edited: Riccardo Scorretti
on 2 May 2022

n = 5:40; % these are the limits of the function

n runs from 5 to 40: you are bound to have problems when trying to evaluate c(n-4:n) because c is a vector of size 36. I guess the solution is to 0-pad the vector c:

c=[0 0 0 0 2*n];

% c=2*n; % the function

a = (1-0.7)/(1-(0.7)^5);

w=a*(0.7).^[0:4];

for k = n

w' is a column vector (because w is a row vector) and c is a row vector, hence the product fliplr(w)'.*c(k-4:k) is a matrix, and the expression you want to evaluate is a row vector which contains the sum of columns of that matrix. Remove the trasposition:

% avg(k) = sum(fliplr(w)'.*c(k-4:k)); % this is the part where the error occurs

avg(n) = sum(fliplr(w) .*c(n-4:n)); % this is the part where the error occurs

end

plot(n,c(5:40),':o');

hold on

plot(n,avg(5:40),'-x');

##### 3 Comments

Riccardo Scorretti
on 2 May 2022

Edited: Riccardo Scorretti
on 2 May 2022

Can you share the file .csv?

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!