Matlab problem

0

Witam wszystkich forumowiczów,

Mam taki problem. Chciałbym zamieścić w pętli kod, który został pogrubiony, ale nie bardzo wiem jak. Może udzielicie mi jakiś podpowiedzi, cokolwiek co mnie nakieruje. W załączniku przesyłam dane (wartości Nf i Ma). Chodzi o to, żeby jakoś odwołać się do tych macierzy. Ogólnie każda wartość Ma odpowiada wartości Nf. I teraz np. wiersz Nf1=Nf(:,1) wyświetla pierwszą kolumnę z macierzy Nf itd. Wiersz trwalosc(:,i)=Nf(ind(:,1); wyszukuje wartości Nf, które są mniejsze od wartości odpowiadającej macierzy ind. Trochę to niezrozumiale napisalem, ale cięzko tak jakoś to opisać. Wiersz TRWALOSC1=trwalosc1(1) wyświetla pierwszą wartość macierzy trawlosc1.

for i=1:10
Moment_sredni(:,i)=mean(Ma((10:130),i));
Moment_NF(:,i)=Moment_sredni(i)/1.15;
ind(:,i)=Ma(:,i)<Moment_NF(:,i);

end
**
Nf1=Nf(:,1); trwalosc1=Nf1(ind(:,1)); TRWALOSC1=trwalosc1(1);
Nf2=Nf(:,2); trwalosc2=Nf2(ind(:,2)); TRWALOSC2=trwalosc2(1);
Nf3=Nf(:,3); trwalosc3=Nf3(ind(:,3)); TRWALOSC3=trwalosc3(1);
Nf4=Nf(:,4); trwalosc4=Nf4(ind(:,4)); TRWALOSC4=trwalosc4(1);
Nf5=Nf(:,5); trwalosc5=Nf5(ind(:,5)); TRWALOSC5=trwalosc5(1);
Nf6=Nf(:,6); trwalosc6=Nf6(ind(:,6)); TRWALOSC6=trwalosc6(1);
Nf7=Nf(:,7); trwalosc7=Nf7(ind(:,7)); TRWALOSC7=trwalosc7(1);
Nf8=Nf(:,8); trwalosc8=Nf8(ind(:,8)); TRWALOSC8=trwalosc8(1);
Nf9=Nf(:,9); trwalosc9=Nf9(ind(:,9)); TRWALOSC9=trwalosc9(1);
Nf10=Nf(:,1); trwalosc10=Nf10(ind(:,10)); TRWALOSC10=trwalosc10(1)**;

0

Hej,
jeżeli się nie mylę, to Twój kod można tak uprościć:

TRWALOSC1=Nf(:,1)(ind(:,1)(1);
TRWALOSC2=Nf(:,2)(ind(:,2)(1);
TRWALOSC3=Nf(:,3)(ind(:,3)(1);
TRWALOSC4=Nf(:,4)(ind(:,4)(1);
TRWALOSC5=Nf(:,5)(ind(:,5)(1);
TRWALOSC6=Nf(:,6)(ind(:,6)(1);
TRWALOSC7=Nf(:,7)(ind(:,7)(1);
TRWALOSC8=Nf(:,8)(ind(:,8)(1);
TRWALOSC9=Nf(:,9)(ind(:,9)(1);
TRWALOSC10=Nf(:,10)(ind(:,10)(1);

tylko nie wiem, czy w ostatniej linijce kodu nie ma błędu (nie wiem czy ma być 1 czy 10 w odpowiednim miejscu). No i te dziesięć zmiennych można jeszcze chyba zwinąć w jedną tablicę. :)

0

Cześć!
Dzięki za odpowiedz, ale niestety kod ten nie działa :/

0

Po wprowadzeniu takiego kodu do pętli:
trwalosc=Nf(ind(:,1));

dostaję wartości równoważne z tym kodem:
Nf2=Nf(:,1); trwalosc2=Nf2(ind(:,1));

Jednak ta 1 powoduje to, że dostaję tylko wartości własnie z pierwszej kolumny (1). Po wprowadzeniu takiego kodu do pętli (zamiana 1 na i):
trwalosc=Nf(ind(:,i));,

dostaję wartości równoważne z tym kodem:
Nf10=Nf(:,1); trwalosc10=Nf10(ind(:,10))

Czyli wyświetla mi wartości tylko z 10 kolumny. A chciałbym, żeby wyświetlały się wartości z wszystkich kolumn (od 1 do 10).

0

Wiem, że nie jest to dużo, ale słabo to wygląda :D Tym bardziej, że muszę gdzieś to zamieścic :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1