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 Center および File ExchangeGet 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