2015-08-22 3 views
0

Я пытаюсь связать два уравнения, где я использую цикл for, вычисляет значение k из диапазона частот (например, 1-5 Гц), затем использует каждое из значений k и заменяет значения k в матрицу 6x6. Может ли кто-нибудь помочь показать мне, как создать матрицу для каждого значения k в Matlab?для петель и матриц в matlab

первого уравнения

for f = 1:5; % Range of Frequencies (Hz) 

f; 
w = 2.*pi.*f; % Angular Frequency (Hz) 

p = 8050;% Density of Mild Steel(kg/m^3) 

v = 0.30; % Poissons Ratio of Mild Steel 

R = 0.02; % Radius of Pipe (m) 

E = 210*10^9; % Youngs Modulus of Mild Steel (pa) 

a = (w.^2).*p; 

b = (p.*(1-(v.^2)).*(R.^2).*(w.^2)-E); 

c = (p.*(R.^2).*(w.^2)-E).*E; 

**k(f) = sqrt((a.*b)/c); % k = Wave Number** 

end 

второе уравнение (6x6 Matrix)

k = 

L1=0.1; 
L2=0.6; 
L3=0.6; 



D= [0,0,exp(-k*L1),exp(-k*L2),0,0; exp(-k*L1),1,exp(-k*L1),exp(-k*L2),0,0; -k*exp(-k*L1),k,k*exp(-k*L1),-k*exp(-k*L2),0,0;0,0,exp(-k*(L1+L2)),k,-exp(-k*(L1+L2)),-exp(-k*L3);0,0,-k*exp(-k*(L1+L2)),1,k*exp(-k*(L1+L2)),k*exp(-k*L3);0,0,exp(-k*(L1+L2)),1,0,0] 
+0

Можно ли перефразировать ваш вопрос? Что вы имеете в виду, что вы подставляете значения K? Вы меняете значения K? И как вы бы создали матрицу 6x6 из значений K? случайно? По определенной схеме? На что вам нужна помощь? – Xxxo

+0

Думаю, мне нужно использовать «для циклов» для поиска k для каждого значения f, затем подставить значения k в матрицу D например: , когда f = 1: 5, вычислить k для каждого значения f , который дает: п = 1, А = 0,0012 е = 2, к = 0,0025 F = 3, к = 0,0037 F = 4, к = 0,0049 F = 5, к = 0,0062 Замените k и L1, L2, L3 на матрицу D , тогда конечный результат - 5 матриц – Atreyu91

ответ

0

(Ответ изменен следующий комментарий)

Вы можете попробовать definig выходной массив D, как массив 3 измерений.

D=NaN(6,6,length(k)) 
for i=1:length(k) 
    D(:,:,i)= [0,0,exp(-k(i)*L1),exp(-k(i)*L2),0,0; exp(-k(i)*L1),1,exp(-k(i)*L1),exp(-k(i)*L2),0,0; -k(i)*exp(-k(i)*L1),k(i),k(i)*exp(-k(i)*L1),-k(i)*exp(-k(i)*L2),0,0;0,0,exp(-k(i)*(L1+L2)),k(i),-exp(-k(i)*(L1+L2)),-exp(-k(i)*L3);0,0,-k(i)*exp(-k(i)*(L1+L2)),1,k(i)*exp(-k(i)*(L1+L2)),k(i)*exp(-k(i)*L3);0,0,exp(-k(i)*(L1+L2)),1,0,0] 
end 

D массива будет:

D(:,:,1) = 

     0   0 0.9999 0.9993   0   0 
    0.9999 1.0000 0.9999 0.9993   0   0 
    -0.0012 0.0012 0.0012 -0.0012   0   0 
     0   0 0.9991 0.0012 -0.9991 -0.9993 
     0   0 -0.0012 1.0000 0.0012 0.0012 
     0   0 0.9991 1.0000   0   0 


D(:,:,2) = 

     0   0 0.9998 0.9985   0   0 
    0.9998 1.0000 0.9998 0.9985   0   0 
    -0.0025 0.0025 0.0025 -0.0025   0   0 
     0   0 0.9983 0.0025 -0.9983 -0.9985 
     0   0 -0.0025 1.0000 0.0025 0.0025 
     0   0 0.9983 1.0000   0   0 


D(:,:,3) = 

     0   0 0.9996 0.9978   0   0 
    0.9996 1.0000 0.9996 0.9978   0   0 
    -0.0037 0.0037 0.0037 -0.0037   0   0 
     0   0 0.9974 0.0037 -0.9974 -0.9978 
     0   0 -0.0037 1.0000 0.0037 0.0037 
     0   0 0.9974 1.0000   0   0 


D(:,:,4) = 

     0   0 0.9995 0.9971   0   0 
    0.9995 1.0000 0.9995 0.9971   0   0 
    -0.0049 0.0049 0.0049 -0.0049   0   0 
     0   0 0.9966 0.0049 -0.9966 -0.9971 
     0   0 -0.0049 1.0000 0.0049 0.0049 
     0   0 0.9966 1.0000   0   0 


D(:,:,5) = 

     0   0 0.9994 0.9963   0   0 
    0.9994 1.0000 0.9994 0.9963   0   0 
    -0.0061 0.0062 0.0061 -0.0061   0   0 
     0   0 0.9957 0.0062 -0.9957 -0.9963 
     0   0 -0.0061 1.0000 0.0061 0.0061 
     0   0 0.9957 1.0000   0   0 

Надеется, что это помогает.

+0

Спасибо, но если y ou скопируйте и вставьте ** второе уравнение ** в matlab и дайте k значение, например. k = 0.0012, создает матрицу 6x6. Я не могу опубликовать изображение, потому что я только что подписался. – Atreyu91

+0

Я не понял ваш вопрос; после вашего комментария, я изменил ответ. Надеюсь, теперь я понял этот вопрос. –

0

Я попытаюсь ответить на ваш вопрос ...

Во-первых, вы не нужно инициал для цикла. Вы можете рассчитать все значения длины волны без петель.

f = 1:5; % Range of Frequencies (Hz) 
w = 2.*pi.*f; % Angular Frequency (Hz) 
p = 8050;% Density of Mild Steel(kg/m^3) 
v = 0.30; % Poissons Ratio of Mild Steel 
R = 0.02; % Radius of Pipe (m) 
E = 210*10^9; % Youngs Modulus of Mild Steel (pa) 
a = (w.^2).*p; 
b = (p.*(1-(v.^2)).*(R.^2).*(w.^2)-E); 
c = (p.*(R.^2).*(w.^2)-E).*E; 
k = sqrt((a.*b)./c); % k = Wave Number 
L1=0.1; 
L2=0.6; 
L3=0.6; 

После этого вы можете использовать цикл для вычисления матрицы D и массив ячеек для хранения результатов:

results = cell(1, length(k)); 
for i = 1:length(k) 
    results{i} = [ 
         0,0,exp(-k(i)*L1),exp(-k(i)*L2),0,0;... 
         exp(-k(i)*L1),1,exp(-k(i)*L1),exp(-k(i)*L2),0,0;... 
         -k(i)*exp(-k(i)*L1),k(i),k(i)*exp(-k(i)*L1),-k(i)*exp(-k(i)*L2),0,0;... 
         0,0,exp(-k(i)*(L1+L2)),k(i),-exp(-k(i)*(L1+L2)),-exp(-k(i)*L3);... 
         0,0,-k(i)*exp(-k(i)*(L1+L2)),1,k(i)*exp(-k(i)*(L1+L2)),k(i)*exp(-k(i)*L3);... 
         0,0,exp(-k(i)*(L1+L2)),1,0,0 
        ] 
end 

P.S. Не пытаясь дотянуться до вас, я думаю, что вы просто хотите, чтобы кто-то разрешил вам упражнение. Если это не так, проигнорируйте мои p.s.

+0

Спасибо, это точный формат, который я пытался достичь. Ха-ха приветствует, но это не упражнение – Atreyu91

Смежные вопросы