Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 08.06.2014
Сообщений: 19

Простое умножение матриц. Неверный результат

03.04.2016, 23:55. Показов 901. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется простенький кусок кода

Matlab M
1
2
3
4
Dopp_shift = (-10E3 : 200 : 10E3)';
k = (2 * pi) .* Dopp_shift;
u = 1i.*(0:1:length(etal)-1);
w = k * u;
Где length(etal) - длина вектора в другой части кода
И вот что интересно - в матрице w оказываюся все значения 0... Кто-то может подсказать, почему такое может происходить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2016, 23:55
Ответы с готовыми решениями:

Неверный результат при сложении матриц
Здравствуйте, столкнулась с такой проблемой - после сложения получается матрица, заполненная одними нулями. Сама программка компилируется...

Функция перемножения матриц выдает неверный результат
int **mas_1; int **mas_2; int **mas_3;//глобальные void multiply(int row1, int col1, int row2, int col2) { if (row1 == col2) ...

Неверный результат при умножении двух матриц
Здравствуйте. Проблема возникла, не могу понять что я сделал не так при умножении матриц, результат постоянно выглядит примерно вот так: ...

10
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
04.04.2016, 08:11
В w у Вас матрица комплексных чисел с реальной частью равной 0.
А что еще можно ожидать проводя следующее умножение:
x * (0+yi) = 0 + (x*y)i
0
0 / 0 / 1
Регистрация: 08.06.2014
Сообщений: 19
04.04.2016, 11:41  [ТС]
Спасибо огромное! Видимо глаз уже замылился, не заметить было

Добавлено через 48 минут
А нет, прошу прощения
Мне же произведение у мнимой части и нужно, потом я беру от всего этого экспоненту, а в ней все элементы вида 1+0i или 1-0i. Вот это меня и смущает.
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
04.04.2016, 11:56
В вашем примере 4 строчки кода, никакой экспоненты нет.
Что Вы делаете дальше - неизвестно. Еще более неизвестно, а что Вы собственно хотите сделать
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
04.04.2016, 12:13
Цитата Сообщение от zappaz00 Посмотреть сообщение
Мне же произведение у мнимой части и нужно
Ну так вы это и получаете. Просмотрите внимательнее элементы матрицы, мнимые части там не все нулевые (первый столбец нулевой).
0
0 / 0 / 1
Регистрация: 08.06.2014
Сообщений: 19
04.04.2016, 13:56  [ТС]
Да, это я вижу, но потом почему-то от ненулевой мнимой части экспонента даёт https://www.cyberforum.ru/cgi-bin/latex.cgi?1\pm0i
Прилагаю код
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
clc;
clear;
Fs = 24.552E6;      % Частота дискретизации в Гц
T_track = 1E-3; % Длительность периода в секундах
T_samples = T_track * Fs;    % Длительность периода в отсчетах
NeedSamples = T_samples * 5;
 
FileName = '.\\1575420__24_MHz__0.dat';
NumOfShiftedSamples = 0; % Считываем фрагмент с самого начала записи
HeadByteSize = 0;
DataType = 'int16';
NumOfChannels = 1;
ChanNum = 0;
Signal = ReadSignalFromFile(FileName, HeadByteSize, ...
    NumOfChannels, ChanNum, NumOfShiftedSamples, NeedSamples, ...
    DataType);
%FsNew = 2.046E6;
etal = repmat( GenCACode(2, 1), 2, 1 ); 
etal = reshape( etal, 1, 2 * length(etal) ); %считали и продублировали
etal = etal .* 2 - 1; %-1,1
Signal = resample( Signal, 1, 12 );
Signal = repmat(Signal, 101, 1);
Dopp_shift = (-10000 : 200 : 10000)';
k = (2 * pi) .* Dopp_shift * (0:1:length(etal)-1);
shift = exp(complex(0, k));
etal = repmat(etal, length(Dopp_shift), 1);
etal = etal .* shift;
A = zeros(length(Dopp_shift), length(Signal)*2-1);
for i=1:1:length(Dopp_shift)
    A(i,:) = xcorr( etal(i,:), conj(Signal(i,:)) );
end
R = abs(A);
Миниатюры
Простое умножение матриц. Неверный результат  
0
 Аватар для bobah16
373 / 343 / 42
Регистрация: 14.07.2015
Сообщений: 2,890
04.04.2016, 14:29
Цитата Сообщение от zappaz00 Посмотреть сообщение
почему-то от ненулевой мнимой части экспонента даёт
У меня получается другой результат для матрицы shift. Мнимая часть получается очень маленькой, но ненулевой. Может у вас формат представления стоит такой, что идет округление до 0.
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
04.04.2016, 14:42
В help MATLAB в описании функции exp:
Y = exp(X) returns the exponential for each element of X. exp operates element-wise on arrays. For complex x + i * y, exp returns the complex exponential ez = ex(cos y + i sin y). Use expm for matrix exponentials.

У Вас величина комплексной части очень большая, а тригонометрические функции от больших величин дают большие погрешности.
Но у Вас k кратно 2пи, а синус от углов кратных 2пи равен 0.
0
0 / 0 / 1
Регистрация: 08.06.2014
Сообщений: 19
04.04.2016, 22:28  [ТС]
Цитата Сообщение от SSC Посмотреть сообщение
У Вас величина комплексной части очень большая, а тригонометрические функции от больших величин дают большие погрешности.
Но у Вас k кратно 2пи, а синус от углов кратных 2пи равен 0.
А как тогда быть? k точно должно быть кратно 2*pi. Когда я выполняла абсолютно такой же сдвиг сигнала по частоте, но с числами порядка одной десятой, експонента была с адекватными значениями... А здесь вот такая проблема
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
05.04.2016, 07:05
Цитата Сообщение от zappaz00 Посмотреть сообщение
А как тогда быть?
Обработка сигналов тема не совсем моя, в своей профф. деятельности этим почти не занимался.
0
0 / 0 / 1
Регистрация: 08.06.2014
Сообщений: 19
05.04.2016, 08:46  [ТС]
Цитата Сообщение от SSC Посмотреть сообщение
Обработка сигналов тема не совсем моя, в своей профф. деятельности этим почти не занимался.
Ладно, буду разбираться. Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2016, 08:46
Помогаю со студенческими работами здесь

Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с матрицами произвольных размеров (перемножения 2х матриц,...

Умножение матриц с интерфейсом и возможность заполнения исходных матриц из файла
Здравствуйте. Я сделал программу, которая умножает матрицы с интерфейсом, только проблема в том что необходимо заполнять сами матрицы...

Транспонирование, умножение матриц, сложение матриц Реализовать в одной программере
транспонирование, умножение матриц, сложение матриц; B^3-A^T Реализовать в одной программере. Помогите решить

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ к элементам свёрнутой матрицы...

Чтение матриц с внешнего файла, умножение матриц...
Вот не могу составить программу... Необходимо считать матрицы А и В с внешнего файла (input). Матрица А размерностью 5х7, В размерностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru