Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010

Формирование матрицы

02.04.2013, 19:42. Показов 4565. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый !

Помогите, пожалуйста, сформировать правильно матрицу:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
T=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]*10^-3;
%амплитуда тока:
I1=4;
%амплитуда и угол напряжения своего конца u1(t)
U1=20; fiu1=pi/2;
%создаем массив тока с изменениями по частоте и углу:
for fi=0:90
    for f=40:60
        for k=1:length(T)
        i_t=I1*sin(2*pi*f*T+fi*pi/180);
        I_t(1,f-39,k)=f;
        I_t(fi+1,1,k)=fi;
        I_t(fi+2,f-38,k)=i_t;
        end
    end
end
I_t
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2013, 19:42
Ответы с готовыми решениями:

Формирование матрицы
Добрый вечер. Помогите пожалуйста с решением задачи. Сформируйте вектор из целых элементов квадратной матрицы произвольной...

Формирование матрицы по условию
Дана матрица А 0.9501 0.0185 0.1763 0.3529 0.2722 0.4186 0.6813 0.2311 0.8214 0.4057 0.8132 ...

Формирование квадратной матрицы
Добрый день, всем прсутствующим. Имеется задача, которую требуется решить с помощью пакета программ matlab, прошу, по возможности,...

47
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
02.04.2013, 20:28
А что Вы делаете в 12-14 строках?
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
02.04.2013, 20:52  [ТС]
пытаюсь загнать все в массив fi*f*k

Добавлено через 8 минут
Ничего не выходит

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
T=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]*10^-3;
%амплитуда тока:
I1=4;
%амплитуда и угол напряжения своего конца u1(t)
U1=20; fiu1=pi/2;
%создаем массив тока с изменениями по частоте и углу:
for fi=0:90
    for f=40:60
        for k=1:length(T)
        i_t=I1*sin(2*pi*f*T+fi*pi/180);
        I_t(1,f-39,1)=f;
        I_t(fi+1,1,1)=fi;
        I_t(1,1,k)=i_t;
        end
    end
end
I_t
Добавлено через 12 минут
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
T=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]*10^-3;
%амплитуда тока:
I1=4;
%амплитуда и угол напряжения своего конца u1(t)
U1=20; fiu1=pi/2;
%создаем массив тока с изменениями по частоте и углу:
for fi=0:90
    for f=40:60
        for k=1:length(T)
        i_t=I1*sin(2*pi*f*T+fi*pi/180);
        I_t(1,f-39,1)=f;
        I_t(fi+1,1,1)=fi;
        I_t(1,1,k)=T;
        I_t(fi+2,f-38,k+1)=i_t;
        end
    end
end
I_t
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
03.04.2013, 01:46
Жеееесть!
Можшь подробней пояснить словами/формулами, что тебе нужно получить и что ты собираешься с ЭТИМ делать?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clc; close all; clear all;
T=(0:20)*10^-3;
I1=4; % амплитуда тока
U1=20; fiu1=pi/2; % амплитуда и угол напряжения своего конца u1(t)
% Cоздаем массив тока с изменениями по частоте и углу:
fi = 0:90;
f = 40:60;
I_t = cell(length(fi),length(f));
for i = 1:length(fi)
    for j = 1:length(f)
        i_t(i, j) = { I1*sin(2*pi*f(j)*T+fi(i)*pi/180) };
    end
end
plot(T, I_t{10, 5})
2
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 07:48
Dimka_rtf, вот я дурень! вместо того, чтобы цитировать сообщение - отредактировал его...
1
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
03.04.2013, 09:43
Цитата Сообщение от Зосима Посмотреть сообщение
отредактировал его
Да ладно За то тема компактнее стала
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 17:19  [ТС]
Цитата Сообщение от Dimka_rtf Посмотреть сообщение
Можшь подробней пояснить словами/формулами, что тебе нужно получить
Вот у меня есть функция:
y=A*sin(2*pi*f*t+fi), где t - время, с; f - частота, Гц; fi - угол. Все эти параметры являются переменными.

Визуально это можно было бы представить трехмерной таблицей (массивом): по одной оси - частота, по другой - угол, по третей - время...
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 17:57
Цитата Сообщение от incognito Посмотреть сообщение
Вот у меня есть функция:
y=A*sin(2*pi*f*t+fi), где t - время, с; f - частота, Гц; fi - угол. Все эти параметры являются переменными.
Визуально это можно было бы представить трехмерной таблицей (массивом): по одной оси - частота, по другой - угол, по третей - время...
Ну это мы уже поняли и даже хитрым образом сформировали
Но тебе же надо хитрым образом ее двигать в окне!
Окно вычисления
*кстать, если взять синусоиду фиксированной частоты и двигать вдоль нее окном, вырезая часть, то фаза видимой части будет увеличиваться (при том, что фаза исходной кривой без изменеия):
Это кавайная анимашка, запусти!
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear all
clc
 
t = linspace(0,10,1000); % массив времени
y0 = sin(2*pi*t);
T = 2;
for tau = 0:0.05:10-T
    yb = [-1 1 1 -1 -1];
    xb = [tau,tau,tau+T,tau+T,tau];
    y1 = y0.*((t>tau)&(t<tau+T));
    plot(t,y0,':g',t,y1,'r',xb,yb,'--b')
    axis([0 10 -5 5])
    pause(0.01)
end
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 18:27  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Но тебе же надо хитрым образом ее двигать в окне!
Да, все верно Беру несколько отсчетов в ширину окна и провожу с ними вычисления. Все становится яснее, если представить это в реальном времени. Приходят данные в каждую новую секунду, т.е. добавляется отсчет справа и окно сдвигается, используя его в вычислениях.

Выражение для diff_eq произволное- там вместо него функция. убрал для простоты.
Причем вычисленное каждый раз значение будет соответствовать центральному отсчету для этих 5ти отсчетов Y. Т.е. если окно использует стоит на 5, 6 , 7, 8, 9 отсчетах, то результат вычисления будет для 7го отсчета - ему соответствовать (этот факт важен будет при построении графиков).

ВОт вчера надумал:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
M=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 X=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]*10^-3; 
fd=X(2)-X(1); %частота дискретизации 
Td=1/fd; %период дискретизации 
I1=4; %амплитуда тока 
U1=20; 
fiu1=pi/2; %амплитуда и угол напряжения своего конца u1(t) 
t=1; %создаем массив тока с изменениями по частоте и углу: 
for fi=0:90     
  for f=40:60         
    for k=3:(length(X)-2)             
      i_X=I1*sin(2*pi*f*X+fi*pi/180);                 
      Y=i_X((k-2):(k+2));     
      diff_eq=Y(1)+Y(2)+Y(4)+Y(5);             
      C(1,t)=fi;             
      C(2,t)=f;             
      C(3,t)=diff_eq;             
      t=t+1;         
   end     
  end 
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 18:36
Так-с, давай эта тема будет исключительно по матрице, а окно и вычисление функции окна - в другой!

*запускал мою анимашку?

Добавлено через 6 минут
Лучше поясни, как из полученной трехмерной матрицы получить одномерный сигнал, чтобы пробежаться по нему окошком?
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 18:44  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Так-с, давай эта тема будет исключительно по матрице, а окно и вычисление функции окна - в другой!

*запускал мою анимашку?
Да, вот, по сути это одна и та же тема. Просто в теме "окна вычисления", видимо, была непонятна суть задачи. Поэтому решил разделить тему на 2 этапа. Здесь подготавливается массив для работы окна - 1 этап.
А само "окно" формируется 2 мя строчками кода. Поэтому не вижу смысла теперь уже отделять.

Анимашку глянул - оч-классно. А можно ее в видеофайл конвертнуть? Мне хорошо было бы вставить в презентацию


Мой код в последнихх сообщениях, вроде как, выполняет все необходимые функции. Поэтому далее, думаю, пойдет доработка для удобного формирования выходных данных. И вот с анимашкой оч интересно

Добавлено через 3 минуты
Цитата Сообщение от Зосима Посмотреть сообщение
Лучше поясни, как из полученной трехмерной матрицы получить одномерный сигнал, чтобы пробежаться по нему окошком?
Получиться должен тоже трехмерный массив.
Если представлять в трехмерном пространстве (1ая ось - частота, 2ая - угол, 3я - время), то окно будет бегать по 3ей оси.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 18:48
Анимашку конечно можно сохранить в avi и конвертировать в нужный формат правда я сейчас, с телефона, не скажу как, но в этом разделе были темы, где я анимашки конвертил в видео (поищи по разделу "спираль архимеда", "эволюция поверхности").

Честно говоря, твои наброски мне малопонятны, а потому не нравятся вот только чтоб разобраться мало времени
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 18:54  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Честно говоря, твои наброски мне малопонятны, а потому не нравятся вот только чтоб разобраться мало времени
тогда не буду Вас больше мучить
дальше, думаю, своим ходом дойду...приведенных ответов достаточно для доработки результата в красивый вид

с анимашкой еще может будут вопросы, поэтому прошу тему не крыть

Всем спасибо
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 19:13
Ты когда прояснил, что результат тоже будет трехмерным, стало ясней может у меня тоже какие-то соображения родятся
Кроме того, трехмерную матрицу "можно растянуть" в двухмерную:
Элементы строки зависят от времени, а каждая строка зависит от своей частоты и фазы:
Matlab M
1
2
3
4
5
6
7
8
t = 0:0.01:5;
i = 1;
for fi=0:90
  for f = 20:40
     Y(i,:) = sin(2*pi*f*t + fi*pi/180);
     i = i+1;
  end
end
Так же в этой матрице, кроме отсчетов можно сохранить соответствующие значения частоты и фазы.
А потом брать каждую строку и елозить по ней окнами!
Единственное, заметь, что в моем случае ширина окна измеряется не в отсчетах, а в единицах времени
И вот еще какой момент:
Пусть у нас реализация сигнала имеет длинну N, ширина окна n, и значения соответсвуют середине окна, тогда первым будет n/2-й отсчет, а последним (N-n/2)-ый, а длинна результата соответственно (N-n) Смекаешь?
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 19:41  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
елозить по ней
я выпал
формулировка в точку



Цитата Сообщение от Зосима Посмотреть сообщение
Пусть у нас реализация сигнала имеет длинну N, ширина окна n, и значения соответсвуют середине окна, тогда первым будет n/2-й отсчет, а последним (N-n/2)-ый, а длинна результата соответственно (N-n) Смекаешь?
Да, понятно

Добавлено через 16 минут
Зосима,а можно анимацию вот так реализовать:
до прохождения окна функция представляет собой набор отсчетов. после прохождения окна функция уже имеет непрерывный вид (желательно и другой цвет). причем, кривая меняет цвет и вид с середины окна.
а внизу или где-нибудь отдельно формируется (вырисовывается) другая кривая, назовем Ф2 (формой и цветом), тоже начиная с середины окна
?

на картинке примерный вид. только нет Ф2.
http://yadi.sk/d/Q7eiqBdm3leB8
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 21:39
По поводу рисования функции ниже - это можно только завтра

Тут я вот еще что подумал:
Для уменьшения объема вычислений можно попробовать (не знаю на сколько это допустимо) делать изменение частоты для фиксированной фазы и затем для фиксированной частоты пробежаться по фазам
Или еще вариант: фазу и частоту можно менять неперывно
Matlab M
1
2
3
4
5
6
7
8
clear, clc
tmax = 10;
t = 0:0.01:tmax;
f0 = 20; % начальная частота
df = 20; % размах частоты
fi0 = 0; % начальная фаза
dfi = pi/2; 
y = sin( 2*pi*(f0+df/tmax*t).*t + (fi0+dfi/tmax*t) );
А вот пример обработки отсчетов в окошке:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% первым делом формируем матрицу Y!!!
f = inline('sqrt(sum(x.^2))'); % функция обработки отсчетов
% в данном случае считается корень суммы квадратов
% важно, чтобы результат был числом!
n = 7; % размер окна
Z = zeros(size(Y)); % инициализируем массив
for i = 1:size(Y,1)
  j = 0;
  while j+n <= size(Y,2) % двигаем, пока окно не достигнет края
    x = Y(i, j+1:j+n); % сохраняем n отсчетов окна
    Z(i, j+fix(n/2)) = f(x); % считаем функцию и сохраняем на позиции центрального отсчета
    % можно сразу:
    % Z(i, j+fix(n/2)) = f( Y(i, j+1:j+n) );
    j = j+1; % сдвигаем окошко
  end
end
% рисуем графики
plot(t,Y(1,:),'b', t, Z(1,:),'r')
Давай, пробуй и график выложи!
1
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 22:03  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Давай, пробуй и график выложи!
Зосима, щас непременно
0
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 22:18  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
А вот пример обработки отсчетов в окошке
Возникают биения
Миниатюры
Формирование матрицы  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.04.2013, 22:26
Хе! Интересненько!
А попробуй вначале прописать матрицу Y из сообщения #14 где развернутая трехмерная матричка и построить графики.
0
 Аватар для incognito
153 / 145 / 2
Регистрация: 08.04.2010
Сообщений: 1,010
03.04.2013, 22:35  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Matlab M
1
2
% рисуем графики  
plot(t,Y(1,:),'b', t, Z(1,:),'r')
вот здесь переменная t - она что содержать должна ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2013, 22:35
Помогаю со студенческими работами здесь

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

Формирование квадратной матрицы по целому значению x
Здравствуйте, столкнулся со средой MatLab. К сожалению, пока что в ней не очень уютно и сложно адаптироваться. Очень надеюсь на...

Формирование для каждой матрицы массива, состоящего из минимальных элементов строк матрицы
Помогите, пожалуйста, найти ошибку в программе. Выводит неверно элементы. interface uses Windows, Messages, SysUtils,...

Формирование матрицы
Всем Здравствуйте :umnik: Задана целочисленная матрица K. Сформировать одномерный массив H из положительных элементов матриц K....

Формирование матрицы
Здравствуйте. Прошу прощения, но мне очень нужна помощь.Очень прошу, помогите. Хотя бы что нибудь. Дана квадратная матрица A порядка n. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru