Creating a function in MATLAB
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Saurabh Madankar
le 11 Fév 2022
Commenté : Walter Roberson
le 11 Fév 2022
I need to create a function with input i and outputs j and k. So i varies from 1,2,3... and i,j and k are related as
, where j =0,1,2,... and k=0,1,2,...,
. So,
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/891385/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/891390/image.png)
for input i=1, outputs should be j=0,k=0;
i=2 ⇒ j=1,k=0;
i=3 ⇒ j=1,k=1;
i=4 ⇒ j=2,k=0;
i=5 ⇒ j=2,k=1;
i=6 ⇒ j=2,k=2;
i=7 ⇒ j=2,k=3;
and so on. How do I create such a function?
0 commentaires
Réponse acceptée
Walter Roberson
le 11 Fév 2022
for I = 1 : 10
[J, K] = decode(I);
fprintf('i = %d, j = %d, k = %d\n', I, J, K);
end
function [j, k] = decode(i)
L2 = nextpow2(i);
if 2.^L2 == i
j = L2;
k = 0;
else
j = L2 - 1;
k = i - 2.^j;
end
end
2 commentaires
Walter Roberson
le 11 Fév 2022
j = floor(log2(i)) ;
k = i - 2.^j;
... a vectorized version
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Workspace Variables and MAT-Files dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!