How would you approach this problem?

1 回表示 (過去 30 日間)
pedro galan feliubadalo
pedro galan feliubadalo 2019 年 10 月 31 日
Hi there,
I want my program to follow the following truth table:
tabla de verdad.PNG
"actual" and "next" columns refer to the following full table:
tabla de excitacion.PNG
So, for example first row, y2 and y2' are both 0, so according to the truth table, J2 has to be 0 and K2 X. Another one, 4th row (nº 3), Y1 and Y1' are 1 and 0, so J must be X and K 1.
I only have been able to get matrices (cc, cu, uc, uu) that show if the values from actual and next follow the truth table:
dec = 0:7;%Decimal values the counter will follow
a = de2bi(dec, 'left-msb'); %actual state of the counter
s = a([2 3 4 5 6 7 8 1],:); %next state of the counter
cc = a==0 & s==0; %values for J = 0
cu = a==0 & s==1; %values for J = 1
uc = a == 1 & a == 0; %values for J = X
uu = a == 1 & a == 1; %values for J = X
In order to get the J and K values I need to make Matlab follow the orders of the truth table, and I don't know how to continue.
I don't like loops, so does Matlab, so I would like to make some sort of "if" function or something similar to get this to work.
Finally, I would only need some orientation about this, don't want to see the code fully written here, just a hint on how you would tackle this.
Thank you.
  1 件のコメント
Daniel M
Daniel M 2019 年 10 月 31 日
For those that don't have the communications toolbox:
a = dec2bin(0:7)-'0';

サインインしてコメントする。

採用された回答

Daniel M
Daniel M 2019 年 10 月 31 日
編集済み: Daniel M 2019 年 10 月 31 日
I don't understand the second truth table, but the first one can be done as follows:
actual = [0;0;1;1];
next = [0;1;0;1];
x = 2;
J = actual*x + ~actual.*next;
K = ~actual*x + actual.*~next;
If x is a row vector, J and K will have as many columns as does x.
  7 件のコメント
Daniel M
Daniel M 2019 年 11 月 1 日
編集済み: Daniel M 2019 年 11 月 1 日
Guess what? It is the exact same logic that I posted in my first answer.
Here it is:
function [J,K] = JKcounter(y,yp)
% This function returns the value for JK for a given y and yp (y-prime)
% input.
% For example: [J,K] = JKcounter(0,0); % J = 0, K = NaN;
% y and yp can be matrix input.
x = 2; % because NaN is difficult to work with.
J = y*x + ~y.*yp;
K = ~y*x + y.*~yp;
J(J==x) = NaN;
K(K==x) = NaN;
end
I've also attached a script showing in detail that this works, and how to use it.
pedro galan feliubadalo
pedro galan feliubadalo 2019 年 11 月 1 日
Well, thank you very much for your time and help. Much appreciated.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by