8 Comments

I can't read that language but the equation goes in MATLAB exactly as it is written there. That is proper syntax.
daniel
daniel on 1 Jan 2023
Write a function velocity(x,y,z,t) that calculates the instantaneous speed when parameters are given and the following formula is known:
v= sqrt(diff(x).^2+diff(y).^2+diff(z).^2)./diff(t);
Note: The calculation of the function can only be performed when the size of the vectors t,z,y,x have the same size (length).
function v = velocity(x,y,z,t)
v = sqrt(diff(x).^2+diff(y).^2+diff(z).^2)./diff(t);
end
Done.
daniel
daniel on 1 Jan 2023
The calculation of the function can only be performed when the size of the vectors t,z,y,x have the same size (length).
Torsten
Torsten on 1 Jan 2023
Edited: Torsten on 1 Jan 2023
Yes, then supply t,x,y and z as vectors of the same length.
Or check their lengths in the function.
daniel
daniel on 1 Jan 2023
In the case of that error message, the problem is that you had accidentally created a variable named velocity that you are then trying to index. If there is a variable in scope and a function of the same name, MATLAB gives priority to the variable in scope.

Sign in to comment.

 Accepted Answer

Try this:
v = velocity([0, 5.6, 7], [0, 1.1, 2.4], [0, 4, 20], [0, 1, 2])
v = 1×2
6.9692 16.1137
function v = velocity(x,y,z,t)
v = [];
if ~isequal(size(x), size(y)) || ~isequal(size(x), size(z)) || ~isequal(size(x), size(t))
uiwait(errordlg('Sizes do not match'));
return;
end
v = sqrt(diff(x).^2+diff(y).^2+diff(z).^2)./diff(t);
end

5 Comments

daniel
daniel on 1 Jan 2023
You must be running different code. I ran mine right here in answers. Paste your code in here, just like I did, then click the green run triangle.
What does this show if you type it in the command window?
which -all velocity
All you have is the m-file function, right? You don't have a variable called velocity, right?
daniel
daniel on 1 Jan 2023
daniel
daniel on 1 Jan 2023
its working tnks
@daniel: isequal accepts more than two input arguments and returns true if and only if all the inputs are equivalent.
That is, you can replace this:
if ~isequal(size(x), size(y)) || ~isequal(size(x), size(z)) || ~isequal(size(x), size(t))
with this:
if ~isequal(size(x), size(y), size(z), size(t))

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Tags

Asked:

on 1 Jan 2023

Commented:

on 3 Jan 2023

Community Treasure Hunt

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

Start Hunting!