Error while using a function instead of a .csv file

조회 수: 2 (최근 30일)
Raed Mohamed Faiz
Raed Mohamed Faiz 2022년 5월 2일
댓글: Raed Mohamed Faiz 2022년 5월 2일
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
Riccardo Scorretti
Riccardo Scorretti 2022년 5월 2일
I fixed some bugs in your code. What do you mean by "if I use a .cvs file"? Functions and .cvs files cannot be used in the same way. Perhaps you mean "when I import (which variable?) from a .cvs file"?
Raed Mohamed Faiz
Raed Mohamed Faiz 2022년 5월 2일
Basically what I did was I used the data from the equation to produce a sheet in excel of the values ranging from the values of n=5 upto n=40, then imported this into matlab and used it to create the graph

댓글을 달려면 로그인하십시오.

답변 (1개)

Riccardo Scorretti
Riccardo Scorretti 2022년 5월 2일
편집: Riccardo Scorretti 2022년 5월 2일
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
Riccardo Scorretti
Riccardo Scorretti 2022년 5월 2일
편집: Riccardo Scorretti 2022년 5월 2일
Can you share the file .csv?
Raed Mohamed Faiz
Raed Mohamed Faiz 2022년 5월 2일
Its alright, I got the answer to the question (c in this case was a column vector and not a row one like the .csv file), Thanks for the help though.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by