Creating a function in MATLAB

1 次查看(过去 30 天)
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?

采纳的回答

Walter Roberson
Walter Roberson 2022-2-11
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 个评论
Saurabh Madankar
Saurabh Madankar 2022-2-11
编辑:Saurabh Madankar 2022-2-11
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 2022-2-11
j = floor(log2(i)) ;
k = i - 2.^j;
... a vectorized version

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by