MATLAB: input arrays into function

Click For Summary
SUMMARY

The discussion focuses on modifying MATLAB code to handle input arrays for financial calculations. The original code calculates the amount A for a scalar loan amount P, interest rate r, and number of periods n. The user learns to adapt the code to accept n as an array, allowing for multiple outputs of A. Key adjustments include using element-wise operations with the dot operator, resulting in the final formula A = (r*P.*F)./(F-1).

PREREQUISITES
  • Familiarity with MATLAB syntax and operations
  • Understanding of financial formulas for loan calculations
  • Knowledge of vector and matrix operations in MATLAB
  • Experience with element-wise operations in MATLAB
NEXT STEPS
  • Learn about MATLAB vectorization techniques for efficient coding
  • Explore MATLAB's element-wise operations and their applications
  • Study financial modeling in MATLAB, focusing on loan amortization
  • Investigate debugging techniques in MATLAB for troubleshooting code
USEFUL FOR

Students, financial analysts, and MATLAB programmers looking to enhance their skills in handling arrays and performing financial calculations efficiently.

Feodalherren
Messages
604
Reaction score
6

Homework Statement



Untitled.png

Homework Equations

The Attempt at a Solution


Okay, so first off I'm just trying to write the code for scalars:
--------------------------------------
clc ; clear

P = 2000
r = .035/12
n = 36

F = (1 + r).^n

A = (r*P*F)/(F-1)
---------------------------------------

This gives me A = 58.6042
which obviously isn't the same as the 586.0416 that they get in the example.
 
Physics news on Phys.org
Feodalherren said:

Homework Statement



Untitled.png

Homework Equations

The Attempt at a Solution


Okay, so first off I'm just trying to write the code for scalars:
--------------------------------------
clc ; clear

P = 2000
r = .035/12
n = 36

F = (1 + r).^n

A = (r*P*F)/(F-1)
---------------------------------------

This gives me A = 58.6042
which obviously isn't the same as the 586.0416 that they get in the example.
Check the value you're using for the loan amount P.
 
Ah, haha. Always something like that. Now for the actual problem that I was having; how do I make it possible for n to be an array and A to display an array of answers?
 
Maybe something like this:
Code:
clc ; clear
P = 20000
r = .035/12
n = [36 48 60]
A = zeros[1, 3]  ; Initialize A to [ 0 0 0]
F = zeros[1, 3] ; Initialize F to [ 0 0 0]

F = (1 + r) .^ n

A = (r*P*F)/(F-1)
I don't have Matlab, so I can't guarantee this will work
 
  • Like
Likes   Reactions: Feodalherren
The code that you have for scalars is actually already pretty close to what you need. Instead of having n be a scalar, you are going to want to set up n to be a vector [36 48 60].

From there, all you need to do in the code, is anytime that you are wanting it to do scalar multiplication or division instead of vector multiplication or division, you will need to put a period before it to force MatLab to do the operation item by item.

Using your work for example:

F = (1 + r).^n (you already have your .^n here before your exponential, so you have that right).

This will provide you F as a vector for each of the associate values for n. From there you will just need to take the second part of your code and add a period before any of the operators that you want MatLab to do as a scalar operation (In your case, any operator that is using your new vector F).
 
  • Like
Likes   Reactions: Feodalherren
I solved it
------------------------
F = (1 + r).^n

A = (r*P.*F)./(F-1)
--------------------------
Thanks guys.
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
9
Views
2K
Replies
1
Views
2K
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K