- Index
- » Users
- » Onder
- » Profile
Posts
Posts
Thanks for your help Perost. I am trying to generate a Modelica Custom Component for MapleSim. Do you think when you sorth this problem out, I will be able to run this in MapleSim? I returned this as a "model" rather than "function" as below;
model basisFunction
extends Maplesoft.Icons.CustomComponent;
parameter Real x[2,1] "The input from multibody system";
Real bPen[sn*sn] "The normalized output for the basis function";
Integer sn=5 "The number of samples in each axist";
Real c[2,1] "Centre of each basis";
Real bFunc[sn*sn] "The basis function";
Real theta_r=linspace(-0.02,0.02,sn) "Generates sn values for position";
Real theta_p=linspace(-0.1,0.1,sn) "Generates sn values for velocity";
Real s[1,2]=[(theta_r[2]-theta_r[1])/1.7, (theta_p[2]-theta_p[1])/1.7];
Modelica.Blocks.Interfaces.RealInput x[2,1] annotation (Placement(transformation(
extent = {
{-110, 32},
{-90, 52}},
rotation = 0)));
Modelica.Blocks.Interfaces.RealOutput bPen[sn*sn] annotation (Placement(transformation(
extent = {
{-110, -51},
{-90, -31}},
rotation = 0)));
equation
for i in 1:size(theta_r,1) loop
for j in 1:size(theta_p,1) loop
c=[theta_r[i]; theta_p[j]];
bFunc[(i-1)*size(theta_r,1)+j]=scalar(exp(-((1.0./s).^2)*(x-c).^2));
end for;
end for;
bPen=bFunc/sum(bFunc);
annotation (uses(Modelica(version = "3.1")));
end basisFunction;
This has not worked. Can you see any clear mistake here?
Thanks again...
Hi,
Thanks for your help. I am using version 1.8.1, I think this is the latest version. I call the function "basisFunction([0.01; 0.1])". Actually, I am trying to generate a Modelica Custom Component to use in MapleSim, but I just wanted to test the function in Modelica before. Maybe this might work if I write this there. I will try and let you know if this works there.
Again thanks for your help
Hi all,
I wrote a function and I have this error, "Failed to elaborate expression: bFunc / sum(bFunc)". If you notice my mistake, could you let me know please. Thanks. The function is:
function basisFunction
input Real x[2,1];
output Real bPen[sn*sn];
protected Integer sn:=5 "The number of the points in each axis";
Real c[2,1];
Real bFunc[sn*sn];
Real theta_r[sn]:=linspace(-0.02,0.02,sn) "Generates sn values for position";
Real theta_p[sn]:=linspace(-0.1,0.1,sn) "Generates sn values for velocity";
Real s[1,2]:=[(theta_r[2]-theta_r[1])/1.7, (theta_p[2]-theta_p[1])/1.7] "Determine the size of the basis function";
// Calculate the basis function response
algorithm
for i in 1:size(theta_r,1) loop
for j in 1:size(theta_p,1) loop
c:=[theta_r[i]; theta_p[j]] "Centre of each basis";
bFunc[(i-1)*size(theta_r,1)+j]:=scalar(exp(-((1.0./(s)).^2)*((x-c).^2)));
end for;
end for;
bPen:=bFunc/sum(bFunc);
end basisFunction;
Thanks Adrian, I looked at those documents before and this is my first algorithm in Modelica. I initially wrote it as a function with algorithm but I am trying to generate a "Modelica Custom Component" for a MapleSim application; hence I am just trying to adapt it into MapleSim.
Thanks for your suggestions...
Hi All,
I am tyring to write a Modelica code and I have this error "Too many equations, overdetermined system.The model has 126 equation(s) and 26 variable(s)". My code is;
model basisFunction
parameter Integer sn=5 "The number of the points in each axis";
parameter Integer i=1;
parameter Integer j=1;
parameter Real c[2,1]=[0.1; 0.2];
parameter Real theta_r[sn]=linspace(-0.02,0.02,sn) "Generates sn values for position";
parameter Real theta_p[sn]=linspace(-0.1,0.1,sn) "Generates sn values for velocity";
parameter Real s[1,2]=[(theta_r[2]-theta_r[1])/1.7, (theta_p[2]-theta_p[1])/1.7] "Determine the size of the basis function";
parameter Real bFunc[sn*sn]=fill(1,sn*sn);
input Real x[2,1]=[0.01; 0.09];
output Real bPen[sn*sn]=fill(1,sn*sn);
// Calculate the basis function response
equation
for i in 1:size(theta_r,1) loop
for j in 1:size(theta_p,1) loop
c=[theta_r[i]; theta_p[j]] "Centre of each basis";
bFunc[(i-1)*size(theta_r,1)+j]=scalar(exp(-((1.0./(s)).^2)*((x-c).^2)));
end for;
end for;
bPen=bFunc/sum(bFunc);
end basisFunction;
if you are able to help me, I will be very pleased. Also if you know how I can plot "bPen" here, please let me know...
Best
Thank you I think I saw my mistake...
Hi all,
I have a type mismatch error in my modelica code;
model basisFunction
parameter Integer sn=5 "The number of the points in each axis";
parameter Integer i=1;
parameter Integer j=1;
parameter Real c[2,1]=[0; 0];
parameter Real theta_r[sn]=linspace(-0.02,0.02,sn) "Generates sn values for position";
parameter Real theta_p[sn]=linspace(-0.1,0.1,sn) "Generates sn values for velocity";
parameter Real s[1,2]=[(theta_r[2]-theta_r[1])/1.7, (theta_p[2]-theta_p[1])/1.7] "Determine the size of the basis function";
parameter Real bFunc[sn*sn]=fill(1,sn*sn);
parameter Real x[2,1]=[0.01; 0.09];
parameter Real bPen[sn*sn]=zeros(sn*sn);
// Calculate the basis function response
equation
for i in 1:size(theta_r,1) loop
for j in 1:size(theta_p,1) loop
c=[theta_r[i]; theta_p[j]] "Centre of each basis";
bFunc[(i-1)*size(theta_r,1)+j]=exp(-((1.0./(s)).^2)*((x-c).^2));
end for;
end for;
bPen=bFunc/sum(bFunc);
end basisFunction;
and the error mesage is ;
Error: Type mismatch in equation t[1]={{(1.0 / s[1,1]) ^ 2.0 * (x[1,1] - c[1,1]) ^ 2.0 + (1.0 / s[1,2]) ^ 2.0 * (x[2,1] - c[2,1]) ^ 2.0}} of type Real=Real[1, 1]
Error: Error occurred while flattening model basisFunction.
Could you help me to fix this problem please?
Thanks
- Index
- » Users
- » Onder
- » Profile