• Регистрация
fatbad
fatbad +12.54
н/д

Одинаковое кол-во элементов в массиве

Коллеги, добрый день.

 

Необходимо использовать corrcoef, а массивы разной длины.

 

Как сделать кол-во элементов одинаково?

Теги

      22.09.2022

      Ответы

      • abeljame1303@gmail.com
        abeljame1303@gmail.com0.00
        23.09.2022 09:59

        The downside to this tunnel rush approach is that it can cause some elements to be lost. In addition, it can also cause some elements to be duplicated io games if you are using a large array.

        • Centurio
          Centurio+37.00
          23.09.2022 12:48

          Определите размеры массивов и выберите наибольший. Какие трудности тут могут быть?

          Или вы что-то другое имели ввиду?

          • fatbad
            fatbad+12.54
            23.09.2022 14:14

            Для corrcoef необохдимы массивы одинаковой длины, у меня разной. Как сдеалть их одинаковой длины не теряя свойств процессов описанных в этих массивах?

            • Centurio
              Centurio+37.00
              23.09.2022 14:35

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

            • fatbad
              fatbad+12.54
              23.09.2022 14:51

               я делал так

                length(data.raw_EtCH{i,2})
                              length(temp)
                              data2 =[];
                              for k=1 : length(data.raw_EtCH{i,2})-1
                                 
                                  if data.raw_EtCH{i,2}(k+1)-data.raw_EtCH{i,2}(k) == 0
                                      data2 = [data2  ;data.raw_EtCH{i,2}(k)*ones(length(temp),1)];
                                  else
                                      data2 = [data2 ;(data.raw_EtCH{i,2}(k): ...
                                          (data.raw_EtCH{i,2}(k+1)-data.raw_EtCH{i,2}(k))/length(temp):data.raw_EtCH{i,2}(k+1))'];
                                  end
                              end
                              figure;
                              subplot(2,1,1);
                              plot(data.raw_EtCH{i,2});
                              subplot(2,1,2);
                              plot(data2);
              
              
              
                              data3 =[];
                              for k=1 : length(temp)-1
                                  if temp(k+1)-temp(k) == 0
              
              
                                      temp(k);
              
                                      data3 = [data3 ; temp(k)*ones(length(data.raw_EtCH{i,2}),1)];
                                  else
                                      data3 = [data3 ;(temp(k): ...
                                          (temp(k+1)-temp(k))/length(data.raw_EtCH{i,2}):temp(k+1))'];
                                  end
                              end
                              figure;
                              subplot(2,1,1);
                              plot(temp);
                              subplot(2,1,2);
                              plot(data3);
                              length(data2)
                              length(data3)

              data2

              data3

               

              графики похожи на оригинал, но чуть-чуть разные по длине

              length(data2)  ans = 998637

              length(data3) ans = 998988,

               

              а хотелось получить

               

              length(data.raw_EtCH{i,2}) * length(temp)   ans = 999232

               

               

              • Centurio
                Centurio+37.00
                23.09.2022 15:31

                Можете выложить массивы data.raw_EtCH и temp? А то у меня сомнения по поводу формирования data2 в ветви else. Там получается столбец с количеством элементов, на один больше, чем в ветви до else.

                • Centurio
                  Centurio+37.00
                  23.09.2022 20:30

                  В общем, понятно, почему у вас data2 и data3 получаются разной длины. Вы в ветви else в обоих случаях добавляете на 1 элемент больше, чем до else, в совокупности это приводит к различию длин векторов.

                  Кроме того, если даже у вас в if в обеих ветвях будет добавляться по одинаковому количеству элементов, всё равно data2 будет иметь длину (length(data.raw_EtCH{i,2})-1)*length(temp), а data3 - длину length(data.raw_EtCH{i,2})*(length(temp)-1). Эти длины-произведения, в общем случае, равны между собой не будут.

                  Могу предложить такой вариант формирования data2 и data3:

                  A=data.raw_EtCH(i,2);
                  B=temp;
                  m=lehgth(A);
                  n=length(B);
                  C=circshift(A,1);
                  data2=A+(0:n-1)'*[round((A(2:end)-C(2:end),7)/n 0];
                  data2=(data2(:))';
                  C=circshift(B,1);
                  data3=B+(0:m-1)'*[round((B(2:end)-D(2:end),7)/m 0];
                  data3=(data3(:))';
                • fatbad
                  fatbad+12.54
                  26.09.2022 13:19

                  спасибо.

                  Ближайшие события