Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Mufa microusb a telefonului mobil...

"Ciudatenii" control pasa...

Impamantare

Apple maps pe Windows 10
 Sfarsitul woke-ismului si al core...

Renovare completa + pompa de cald...

Libre Office nu vad liniile

Modalitați amuzante și ...
 O disparitie de ani buni, Acces D...

Mancarea e scumpa

Parere achiziționare BMW G20

Schimbarea bateriei moderne la VA...
 Rostschreck Lidl

Si noi suntem Florin Piersic? / J...

Rascumparare euroobligatiuni (pri...

Detartraj partial slatina
 

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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

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