Ich habe Matrix R(100*100)
und ich mag A(100*100)
wie unter Bedingungenmit spezifischen Bedingungen
Wenn ich neue Matrix erzeugen, eine Frequenz (let us say frequency = 20)
eine neue Bedingung hinzuzufügen. Damit meine ich, werden fünf Bedingungen innerhalb meiner Domain haben `(100/20) = 5
From 1 to 20, from 21 to 40, from 41 to 60, from 61 to 80, and from 81 to 100.
Lassen Sie uns meine ursprüngliche Matrix annehmen, ist
[1 1 1……..1]
[2 2 2 …….2]
[3 3 3 ………3]
And so on
[100 100 100 …..100]
Die neue Matrix
sein mussFrom 1 to 20 same as old matrix
[1 1 1……..1]
[2 2 2 …….2]
[3 3 3………3]
From 21 to 40
A(21,j)=R(21,j)+R(1,j) (row 21 + row 1)
A(22,j)=R(22,j)+R(2,j) (row 22 + row 2)
A(23,j)=R(23,j)+R(3,j) (row 23 + row 3)
And so on
From 41 to 60
A(41,j)=R(41,j)+R(21,j) +R(1,j) (row 41+row 21 + row 1)
A(42,j)=R(42,j)+R(22,j) +R(2,j) (row 42+row 22 + row 2)
And so on
A(81,j)=R(81,j)+R(61,j)+R(41,j)+R(21,j)+R(1,j) (row 81+row 61 + row 41 + row 21+ row 1)
Jedes Mal, wenn ich die Frequenz erreiche, werde ich eine neue Bedingung haben. Meine Frage gibt es eine ausreichende Möglichkeit, das zu tun? Ich habe meinen Code geschrieben und es funktioniert gut, aber jedes Mal, wenn ich die Frequenz ändere, werde ich eine neue Bedingung haben. Für den Fall oben habe ich 5 conditions
, aber wenn ich frequency 5
verwende, werde ich 20 conditions
haben und ich muss alle Gleichungen ändern. Ich meine, ich Code benötigen
ich unten Code schrieb
clc;
clear;
prompt = 'Enter Frequency='; %Frequency=20
N= input(prompt);
Frequency=N;
one_step=1/Frequency; %Frequency
time=Frequency*one_step;
number_of_steps=time/one_step; %Number of steps until next condition
total_steps=100;
R1 = rand(100,100);
Number_of_Lines=(total_steps/number_of_steps)+1; %100/20
A(100,100)=0;
for i=1:100
for j=1:100
if i>=1 && i<=number_of_steps
A(i,j)=R1(i,j);
elseif i>number_of_steps && i<= 2*number_of_steps
A(i,j)=R1(i,j)+R1(i-number_of_steps,j);
elseif i>2*number_of_steps && i<= 3*number_of_steps
A(i,j)=R1(i,j)+R1(i-number_of_steps,j)+R1(i-2*number_of_steps,j);
elseif i>3*number_of_steps && i<= 4*number_of_steps
A(i,j)=R1(i,j)+R1(i-number_of_steps,j)+R1(i-2*number_of_steps,j)...
+R1(i-3*number_of_steps,j);
elseif i>4*number_of_steps && i< 5*number_of_steps
A(i,j)=R1(i,j)+R1(i-number_of_steps,j)+R1(i-2*number_of_steps,j)...
+R1(i-3*number_of_steps,j)+R1(i-4*number_of_steps,j);
end
end
end
Ihr Split scheint ungleichmäßig zu sein "Von 1 bis 19, von 20 bis 39," könnte absichtlich sein, aber was tun Sie zum Beispiel für 'A (39, :)'? – karakfa
@karakfa, Vielen Dank. Sie haben absolut Recht. Ich habe das Splitting geändert, es ist gerade jetzt. Bitte, wie kann ich diesen Code allgemein für jede Frequenz machen? – user6052232