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

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

22.09.2022

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

 

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

 

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

Теги

      22.09.2022

      Ответы

      • Centurio
        Centurio+42.00
        23.09.2022 09:48

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

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

        • fatbad
          fatbad0.00
          23.09.2022 11:14

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

          • Centurio
            Centurio+42.00
            23.09.2022 11:35

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

          • fatbad
            fatbad0.00
            23.09.2022 11: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+42.00
              23.09.2022 12:31

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

              • Centurio
                Centurio+42.00
                23.09.2022 17: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
                fatbad0.00
                26.09.2022 10:19

                спасибо.

                • gumiamsy
                  gumiamsy0.00
                  17.11.2022 03:08

                  Какие трудности тут могут быть?

                  snow rider 3d

                  • jameswalte
                    jameswalte0.00
                    6.01.2023 11:08

                    Как сдеалть их одинаковой длины не теряя свойств процессов описанных в этих массивах?

                                                                                                                 

                                                                                                                                  event party bus orange county

                  • tadaadmonish
                    tadaadmonish0.00
                    23.02.2023 06:59

                    I can't get any column, why?

                    tunnel rush