Creating a function in MATLAB

2 vues (au cours des 30 derniers jours)
Saurabh Madankar
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,
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?

Réponse acceptée

Walter Roberson
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
i = 1, 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 i = 8, j = 3, k = 0 i = 9, j = 3, k = 1 i = 10, j = 3, k = 2
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
Saurabh Madankar
Saurabh Madankar le 11 Fév 2022
Modifié(e) : Saurabh Madankar le 11 Fév 2022
Thanks a lot, I didn't know about the built in function nextpow2. I went through the documentation and now have understood how this code works.
Walter Roberson
Walter Roberson le 11 Fév 2022
j = floor(log2(i)) ;
k = i - 2.^j;
... a vectorized version

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical 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!

Translated by