Matrix size mismatch Matlab Function

4 ビュー (過去 30 日間)
Laura
Laura 2023 年 3 月 28 日
コメント済み: Laura 2023 年 3 月 28 日
Hi,
I am trying to code this MATLAB Function where I am working with vectors:
function [Wp,S] = fcn(x, vel, Fext)
r=[Fext;x;vel];
p=50;
c=0.2;
mu=c*ones(1,p);
sigma=1;
alpha=0.01;
S=ones(p,1);
for j=1:p
S(j)=exp(-norm(r-mu(:,j))^2/(2*sigma^2));
end
Wp=alpha*Fext*S;
Wp=Wp';
I am getting this following error, but I don't get why there is a mismatch:
Size mismatch (size [1 x 1] ~= size [50 x 1]). The size to the left is the size of the left-hand side of the assignment.
Function 'MATLAB Function3' (#50.102.103), line 8, column 1: "S" Launch diagnostic report.
Thanks!

採用された回答

Torsten
Torsten 2023 年 3 月 28 日
移動済み: Torsten 2023 年 3 月 28 日
S(j) is a single value (1x1).
exp(-norm(r-mu(:,j))^2/(2*sigma^2)) is a vector (50x1).
You try to save a vector in a scalar value:
S(j)=exp(-norm(r-mu(:,j))^2/(2*sigma^2));
Error.
  5 件のコメント
Torsten
Torsten 2023 年 3 月 28 日
編集済み: Torsten 2023 年 3 月 28 日
How do you call the function (i.e. what is r) ?
This code works, e.g.:
x=1;
vel=1;
Fext = 1;
[Wp,S] = fcn(x, vel, Fext)
Wp = 1×50
0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038 0.0038
S = 50×1
0.3829 0.3829 0.3829 0.3829 0.3829 0.3829 0.3829 0.3829 0.3829 0.3829
function [Wp,S] = fcn(x, vel, Fext)
r=[Fext;x;vel];
p=50;
c=0.2;
mu=c*ones(size(r,1),p);
sigma=1;
alpha=0.01;
S=ones(p,1);
for j=1:p
S(j)=exp(-norm(r-mu(:,j))^2/(2*sigma^2));
end
Wp=alpha*Fext*S;
Wp=Wp';
end
Laura
Laura 2023 年 3 月 28 日
Hey Torsten! Just made it work! So I am coding a Matlab function in Simulink, where it was giving me that error. So I moved to Matlab, and it does work fine there as you mentioned! So I realized that the issue was that in the Matlab function you have to specify the size of each variable, or it makes it "inherited". Anyways, thanks so much for yout help!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSources についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by