8 commentaires

Image Analyst
Image Analyst le 1 Jan 2023
I can't read that language but the equation goes in MATLAB exactly as it is written there. That is proper syntax.
daniel
daniel le 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).
Torsten
Torsten le 1 Jan 2023
function v = velocity(x,y,z,t)
v = sqrt(diff(x).^2+diff(y).^2+diff(z).^2)./diff(t);
end
Done.
daniel
daniel le 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 le 1 Jan 2023
Modifié(e) : Torsten le 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 le 1 Jan 2023
Walter Roberson
Walter Roberson le 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.

Connectez-vous pour commenter.

 Réponse acceptée

Image Analyst
Image Analyst le 1 Jan 2023

0 votes

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 commentaires

daniel
daniel le 1 Jan 2023
Image Analyst
Image Analyst le 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 le 1 Jan 2023
daniel
daniel le 1 Jan 2023
its working tnks
Voss
Voss le 3 Jan 2023
@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))

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by