Creating a function in MATLAB

2 Ansichten (letzte 30 Tage)
Saurabh Madankar
Saurabh Madankar am 11 Feb. 2022
Kommentiert: Walter Roberson am 11 Feb. 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?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 11 Feb. 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 Kommentare
Saurabh Madankar
Saurabh Madankar am 11 Feb. 2022
Bearbeitet: Saurabh Madankar am 11 Feb. 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 am 11 Feb. 2022
j = floor(log2(i)) ;
k = i - 2.^j;
... a vectorized version

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by