If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
Mathematical variables (Ruby)
9 posts
• Page 1 of 1
Mathematical variables (Ruby)
Hi,
Since I've never had a chance to combine ruby based math in my project, just wanted to get a clue about the very basic algebra functionality in ruby. Can someone post a very basic (but please, full ) code how should we use mathematical variables with ruby?
For example:
I have 1 int. input named @input1. I would like to make a variable called "x" with it:
x = ((@input1 * 4) + 2)
How do I actually formulate the ruby code to use my variable correctly if ,let's say, I got 2 outputs in this code and I want that the first would output my "x" value and second would output "1" anytime "x" = 1 or else, it would output "0".
Thanks
Since I've never had a chance to combine ruby based math in my project, just wanted to get a clue about the very basic algebra functionality in ruby. Can someone post a very basic (but please, full ) code how should we use mathematical variables with ruby?
For example:
I have 1 int. input named @input1. I would like to make a variable called "x" with it:
x = ((@input1 * 4) + 2)
How do I actually formulate the ruby code to use my variable correctly if ,let's say, I got 2 outputs in this code and I want that the first would output my "x" value and second would output "1" anytime "x" = 1 or else, it would output "0".
Thanks
-
kortezzzz - Posts: 763
- Joined: Tue Mar 19, 2013 4:21 pm
Re: Mathematical variables (Ruby)
Hi Kortezzz.
Not sure this will help, but [someone] posted mathematical examples in RUBY, and shared it.
He's the code.
Not sure this will help, but [someone] posted mathematical examples in RUBY, and shared it.
He's the code.
- Attachments
-
- Mathematical Examples in Ruby - Beginners.fsm
- (5.12 KiB) Downloaded 913 times
- RJHollins
- Posts: 1571
- Joined: Thu Mar 08, 2012 7:58 pm
Re: Mathematical variables (Ruby)
- Code: Select all
def event(i,v,t)
x = ((@input1 * 4) + 2)
output 0,x #outputs value of x to the first output (indexing starts at zero).
if x==1
output 1,1 #of x==1 send 1 to second output
else
output 1,0 # if x!=1 send 0 to second output
end
end
Alternatively, if this is the only thing the module will do, you can omit the "event(i,v,t)" declaration.
Also the "if" statement may be represented in various ways. The shortest would probably be ternary operator:
- Code: Select all
x = ((@input1 * 4) + 2)
output 0,x
output 1, (x==1 ? 1 : 0) # this is shortcut for "if x==1 then 1 else 0 end"
Ruby is very high-level language. It automatically declares variables on fly and converts formats.
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: Mathematical variables (Ruby)
KG_is_back wrote:Alternatively, if this is the only thing the module will do, you can omit the "event(i,v,t)" declaration.
Also the "if" statement may be represented in various ways. The shortest would probably be ternary operator:
- Code: Select all
x = ((@input1 * 4) + 2)
output 0,x
output 1, (x==1 ? 1 : 0) # this is shortcut for "if x==1 then 1 else 0 end"
Ruby is very high-level language. It automatically declares variables on fly and converts formats.
They say: "Nip it in the bud!"
So let me point out that the ternary operator is considered bad coding in Ruby. Why? Because it is a relic from C/C++, where an if-clause is not an object. In Ruby it is, so it is better to write
- Code: Select all
output 1, if x==1 then 1 else 0 end
Ruby made all this language stuff available to have a programming language that everyone can read, not just some creepy C developers. Using english as normal as possible is a goal of Ruby. That's why you can also write things like "@myvar.even?" instead of doing some cryptic math just to see if a number is odd or even. Some people may think the ternary operator would be quicker, because it is written shorter. That's not the case!
Also, for instance variables, they should always be initialized in the initializing method. It is bad habit to initialize them in some of the many sub-methods, so that others have a hard time to understand the flow of the code.
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: Mathematical variables (Ruby)
Thanks a lot KG, that's very helpful. The first schematic contains much complex math examples, which are kinda overkill for me (but great to have it here. Some talented folks would surely find it helpful one day ). The second code was exactly what I've been looking for; simple, understandable yet effective math functionality for "every-day" usage.
Cheers!
Cheers!
-
kortezzzz - Posts: 763
- Joined: Tue Mar 19, 2013 4:21 pm
Re: Mathematical variables (Ruby)
Ruby made all this language stuff available to have a programming language that everyone can read, not just some creepy C developers. Using english as normal as possible is a goal of Ruby
Yep, tulamide. I'm absolutely with you in this case. As a poor coder, I also prefer the more readable code rather that the shortcuts. I don't really have an idea if both codes are just the same in case of effectiveness and speed, but your version is much clearer to my unprofessional eyes.
Thanks for that comment, pal.
-
kortezzzz - Posts: 763
- Joined: Tue Mar 19, 2013 4:21 pm
Re: Mathematical variables (Ruby)
Thanks tulamide for your comments and examples.
As someone that needs maximum learning with minimal time, I have to follow every thread on this board.
Examples are always welcomed, but when someone shares their insight/experience on the 'thought process' [a liken RUBY to english language] ... that really does helps !
True, I need to spend more time with RUBY documentation/syntax ... but the 'thought' process shared puts a framework to it.
thanks once again
As someone that needs maximum learning with minimal time, I have to follow every thread on this board.
Examples are always welcomed, but when someone shares their insight/experience on the 'thought process' [a liken RUBY to english language] ... that really does helps !
True, I need to spend more time with RUBY documentation/syntax ... but the 'thought' process shared puts a framework to it.
thanks once again
- RJHollins
- Posts: 1571
- Joined: Thu Mar 08, 2012 7:58 pm
Re: Mathematical variables (Ruby)
Math is very easy to do in Ruby and a good entry point for noobs like me. Here is another example which shows the advantage of Ruby over green math: a simple biquad lowpass filter coefficients module. This is how a green math implementation of the RBJ cook book formulas looks like:
And this is the same in Ruby:
I find it much faster to set up in Ruby, and certainly much easier to debug!
And this is the same in Ruby:
I find it much faster to set up in Ruby, and certainly much easier to debug!
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: Mathematical variables (Ruby)
martinvicanek wrote:And this is the same in Ruby:
I find it much faster to set up in Ruby, and certainly much easier to debug!
Small tip: PI is defined in Math, so
- Code: Select all
omega = Math::PI * @freq
gives you higher accuracy
You are right. It is faster to set up and easier to debug. But don't forget, this is for us, people that already programmed with another programming language before. Those that never programmed before will love that they can program visually instead!
On the other hand, without Ruby I would never have been able to realize the spline module. A nightmare thinking about how to do that in green!
In the end, I think, that means to start in green, then slowly start to simplify things with Ruby modules, until you're experienced enough to do the whole thing in Ruby.
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
9 posts
• Page 1 of 1
Who is online
Users browsing this forum: Google [Bot] and 79 guests