|
Как объединить матрицы по чет не чет в Matlab |
|
|
|
Sep 28 2016, 08:46
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Имеются две матрицы A = [1,3,5,7]; B = [2,4,6,8]; Как в Матлаб объединить эти матрицы в С так чтобы элементы А стояли на нечетных местах в строке, а B на четных - С = [1,2,3,4,5,6,7,8]?
Спасибо.
|
|
|
|
|
 |
Ответов
|
Sep 28 2016, 13:15
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 17-08-11
Пользователь №: 66 760

|
Давайте самостоятельно, это уже перестает быть интересным.
|
|
|
|
|
Sep 30 2016, 06:00
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Не получается. CODE %% инициализация clc; clear all; f = 90000; % центральная частота Гц fs = 360000; % частота дискретизации Гц A = 1; % амплитуда сигнала ts = 1/fs; % период одного дискрета tm = 200; % количество проходов участка моделирования td = 5; % коэффициент децимации w=2*pi*f; % круговая частота 1 tmin = 0; % начальное время (начальная фаза) tmax = tm*ts; % конечное время offset = 2*pi/32; % один минимальный шаг смещения step = 1; % множитель миним. шага смещения % матрица коэффициентов 51 коэффициент (Equiripple 75-85-95-105 кГц) kf = [0,-834,0,283,0,-202,0,8,0,307,0,-738,0,1260,0,-1836,0,2417, ... 0,-2947,0,3372,0,-3647,0,3742,0,-3647,0,3372,0,-2947,0, ... 2417,0,-1836,0,1260,0,-738,0,307,0,8,0,-202,0,283,0,-834,0]; lkf =length(kf); % количество коэффициентов % матрица времени t = linspace(tmin, tmax+tmin, fs*tmax+1); % матрица сдвигов t_offset = reshape(linspace(0, offset, 32), 32, 1); % матрица сигналов (32 сигнала) x = zeros(32,201); toff = 1:32; for toff = 1:32 x(toff,  = A*sin(w*t + step*offset*toff-offset); x(toff,1:60) = 0; x(toff, 140:201) = 0; end %% моделирование z = zeros(32,lkf); zr = zeros(32,200); zrf = zeros(32,200); Xf = zeros(32,200); for tm_mod = 1:tm for tf = 1:32 % поэлементное умножение if tm_mod < 150 z = x(tf,tm_mod:(tm_mod+50)).*kf; end % матрица выходных данных КИХ 90 кГц 32 канала zr(tf, tm_mod) = round(sum(z)); end if tm_mod > 1 zrf(:,tm_mod-1) = 1i*zr(:,tm_mod-1) + zr(:,tm_mod-1); % fft complex 32 точки от двух соседних столбцов Xf(:,tm_mod-1) = fft(zrf(:,tm_mod-1), 32); end end % fft 32 точки от двух соседних столбцов Z = sqrt((real(Xf)).^2+(imag(Xf)).^2); %[X, Y] = meshgrid([real(Xf(:,  ,real(Xf(:,  ))]); % выборки по сигналу x(1) figure(1) plot(x(1,  , 'r'); hold on stem(x(1,  ); % графика элементов массива zr figure(2) plot(zr(1,  , 'r'), grid; hold on stem(zr(1,  ); % fft figure(3) plot3(X, Y, Z); axis([1,32 1,200 1,10000]) Не врубаюсь как правильно сформировать X и Y для plot3...
Сообщение отредактировал Acvarif - Sep 30 2016, 07:40
|
|
|
|
|
Oct 4 2016, 17:53
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Получилось. Может кому пригодится... CODE %% инициализация clc; clear all; % центральная частота Гц f = 90000; % частота дискретизации Гц fs = 360000; % коэффициент децимации td = 1; % амплитуда сигнала A = 1; % период одного дискрета ts = 1/fs; % количество проходов участка моделирования tm = 200; % круговая частота w=2*pi*f; % начальное время (начальная фаза) tmin = 0; % конечное время tmax = tm*ts; % один минимальный шаг смещения offset = 2*pi/32; % множитель миним. шага смещения step = -5; % вариант коэффициентов КИХ фильтра vf = 3; % матрица коэффициентов 51 коэффициент (окно Чебышева 85-95 кГц) kf1 = [0 116 0 -214 0 354 0 -540 0 772 0 -1042 0 1339 0 -1645 0 1939 ... 0 -2199 0 2403 0 -2533 0 2577 0 -2533 0 2403 0 -2199 0 1939 ... 0 -1645 0 1339 0 -1042 0 772 0 -540 0 354 0 -214 0 116 0]; % матрица коэффициентов 51 коэффициент (окно Хеминга 85-95 кГц) kf2 = [0,95,0,-151,0,260,0,-431,0,666,0,-958,0,1292,0,-1644,0,1988, ... 0,-2295,0,2537,0,-2692,0,2746,0,-2692,0,2537,0,-2295,0,1988, ... 0,-1644,0,1292,0,-958,0,666,0,-431,0,260,0,-151,0,95,0]; % матрица коэффициентов 51 коэффициент (Equiripple 75-85-95-105 кГц) kf3 = [0,-834,0,283,0,-202,0,8,0,307,0,-738,0,1260,0,-1836,0,2417, ... 0,-2947,0,3372,0,-3647,0,3742,0,-3647,0,3372,0,-2947,0, ... 2417,0,-1836,0,1260,0,-738,0,307,0,8,0,-202,0,283,0,-834,0]; if vf == 1 kf = kf1; elseif vf == 2 kf = kf2; elseif vf == 3 kf = kf3; end % количество коэффициентов lkf =length(kf); % матрица времени t = linspace(tmin, tmin+tmax, fs*tmax+1); % матрица сигналов (32 сигнала со смещ. step*offset*toff-offset) xs = zeros(32,201); for toff = 1:32 xs(toff,  = round(A*sin(w*t + step*offset*toff-offset)); xs(toff,1:80) = 0; xs(toff, 140:201) = 0; end %% моделирование zs = zeros(32,lkf); zr = zeros(32,200); zrf = zeros(32,200); Xf = zeros(32,200); for tm_mod = 1:td:tm for tf = 1:32 % поэлементное умножение if tm_mod < 150 zs = xs(tf,tm_mod/td:(tm_mod/td+50)).*kf; end % матрица выходных данных КИХ 90 кГц 32 канала zr(tf, tm_mod/td) = round(sum(zs))*0.0001; end if tm_mod > td zrf(:,tm_mod-1) = 1i*zr(:,tm_mod-1) + zr(:,tm_mod); % fft complex 32 точки от двух соседних столбцов Xf(:,tm_mod-1) = fft(zrf(:,tm_mod-1), 32); end end % fft 32 точки от двух соседних столбцов z = sqrt((real(Xf)).^2+(imag(Xf)).^2); % координаты x y x = zeros(32,200); y = zeros(32,200); for tm_mod = 1:1:32 x(tm_mod,  = tm_mod; end for tm_mod = 1:1:tm y(:,tm_mod) = tm_mod; end %% графика % выборки по сигналу xs figure(1) plot(xs(1,  , 'r'); hold on stem(xs(1,  ); title('Дискретный сигнал'), % графика элементов массива zr figure(2) plot(zr(1,  , 'r'), grid; hold on stem(zr(1,  ); title('Дискретный сигнал после КИХ фильтра'), if step >= 0 nl = abs(step)+1; else nl = 32-abs(step)+1; end figure(3) plot(z(nl,  , 'r'), grid; hold on stem(z(nl,  ); title('Пространственный БПФ луч nl'), figure(4) plot3(x, y, z), grid; title('БПФ 32 точки'), xlabel('Номер выхода БПФ'), ylabel('Дискретное время(выборки)'), zlabel('Амплитуда')
|
|
|
|
Сообщений в этой теме
Acvarif Как объединить матрицы по чет не чет в Matlab Sep 28 2016, 08:46 MiPe КодC = reshape([A;B], 1, []... Sep 28 2016, 09:11 Acvarif Цитата(MiPe @ Sep 28 2016, 12:11) КодC = ... Sep 28 2016, 12:10  MiPe Цитата(Acvarif @ Sep 28 2016, 15:10) Прав... Sep 28 2016, 12:54   Acvarif Цитата(MiPe @ Sep 28 2016, 15:54) А делае... Sep 28 2016, 13:08 litv to Mipe:
постыдились бы за минуту решать сложные г... Sep 28 2016, 10:59 Herz А это бестолковое цитирование зачем? Sep 28 2016, 13:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|