Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...
 

Descompunere vector dupa anumite reguli

  • Please log in to reply
1 reply to this topic

#1
geotux

geotux

    Junior Member

  • Grup: Junior Members
  • Posts: 49
  • Înscris: 12.07.2019
Salutare !

Vreau sa descompun un vector b in doua componente(vectori: b1 si b2), respectand urmatoarele reguli:
0) b = b1+b2
1) toate valorile de 2, se descompun in doua valori de 1
2) pentru prima jumatate a vectorului b: primul 1 se muta in b2 ; al 2-lea 1 ramane in b1; al 3-lea 1 se muta in b2.....si tot asa pana la finalul primei jumatati
3) pentru a II-a jumatate a vectorului b: primul 1 ramane in b1; al 2-lea se muta in b2; al 3-lea ramane in b1...si tot asa pana la final

Pentru n=4 , asa ar trebui sa arate descompunerea:

b = [2; 1; 2; 1; 0; 1; 2; 1 ;2]
b1 = [1; 0; 1; 1; 0; 1; 1; 0; 1]
b2 = [1; 1; 1; 0; 0; 0; 1; 1; 1]

Am incercat asa , dar nu merge:
clc;
clear;
close all;
n=4;
%b
b=zeros((n-1)^2,1);
b1=zeros((n-1)^2,1);b2=zeros((n-1)^2,1);
b(1)=2;
b(2:(n-2))=ones(n-3,1);
b(n-1)=2;
for i=1:n-3
	b((n-1)*i+1)=1;
	b((n-1)*(i+1))=1;
end
b((n-1)*(n-2)+1)=2;
b((n-1)*(n-2)+2:(n-1)*(n-2)+n-2)=ones(n-3,1);
b((n-1)^2)=2;

lx = (length(b));
half = ceil(lx/2);
j=(n-1)^2;
% 2 se descompune in 1 si 1, peste tot
for i=1:lx
  if find(b(i)==2)
	b1(i)=1;
	b2(i)=1;
  end
end
% randuri impare din prima jum
bimpar = b(1:2:end,:);
% randuri pare din prima jum
bpar = b(2:2:end,:);

% cautam in prima jumatate a vectorului b
for i=2:half
 
  if find(bimpar(i)==1)
	b1(i)=0;
	b2(i)=1;
  end
 
%  if find(bpar(i)==1)
%	b1(i)=1;
%	b2(i)=0;
%  end
 
end


% cautam in a II-a jumatate a vectorului b
for i= half + 1 : j-1
  if find(b(i)==1)
	b1(i)=1;
	b2(i)=0;
  end
end
b1'
b2'




#2
geotux

geotux

    Junior Member

  • Grup: Junior Members
  • Posts: 49
  • Înscris: 12.07.2019
Am rezolvat asa:

% descompunere termen liber dupa X is Y
% b= bx + by
% 2 se descompune in doi de 1, peste tot
% prima jumatate a vectorului b: primul 1 se muta in b2, urmatorul 1 sta in b1...si tot asa
% a II-a jumatate: primul 1 sta in b1, urmatorul se muta in b2...si tot asa pana la final
clc;
clear;
close all;
n=4;
%b
b=zeros((n-1)^2,1);
b1=zeros((n-1)^2,1);b2=zeros((n-1)^2,1);
b(1)=2;
b(2:(n-2))=ones(n-3,1);
b(n-1)=2;
for i=1:n-3
	b((n-1)*i+1)=1;
	b((n-1)*(i+1))=1;
end
b((n-1)*(n-2)+1)=2;
b((n-1)*(n-2)+2:(n-1)*(n-2)+n-2)=ones(n-3,1);
b((n-1)^2)=2;
lx = (length(b));
half = ceil(lx/2);
j=(n-1)^2;
% 2 este descompus in doi de 1
b1(1)=1;
b2(1)=1;
b1(j)=1;
b2(j)=1;
% indica paritate(comutator)
odd=1;
% ciclam prin prima jumatate
for i=2:half
   
   
	if b(i)==1
		if odd==1
			b1(i)=0;
			b1(i+1)=1;
			b2(i)=1;
			b2(i+1)=0;
		   
			% urmatorul 1; par sau impar
			odd=0;
		else
			b1(i)=1;
			b1(i+1)=0;
			b2(i)=0;
			b2(i+1)=1;
			% urmatorul 1
			odd=1;
		end
	   
	   
	end
   
	if b(i)==0
		b1(i)=0;
		b2(i)=0;
	end
   
	if b(i)==2
		b1(i)=1;
		b2(i)=1;
	end
end
%schimbam ordinea
odd=0;
% ciclam prin a II-a jumatate
for i= half + 1 : j-1
   
	if b(i)==1
		if odd==0
			b1(i)=1;
			b1(i+1)=0;
			b2(i)=0;
			b2(i+1)=1;
		   
			% urmatorul 1
			odd=1;
		else
			b1(i)=0;
			b1(i+1)=1;
			b2(i)=1;
			b2(i+1)=0;
			% urmatorul 1
			odd=0;
		end
	end
   
	if b(i)==0
		b1(i)=0;
		b2(i)=0;
	end
   
	if b(i)==2
		b1(i)=1;
		b2(i)=1;
	end
   
end
b2(j)=1;

[b';b1';b2']



Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate