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

Занесение в матрицу новых значений элементов

17.03.2015, 14:30. Показов 2326. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, как можно заменить каждый элемент входной матрицы новыми значениями, полученными после выполнения функции? Прикрепляю код функции, считает все правильно, проблема в том, что когда мы имеем матрицу большой размерности (даже 64*64 и больше) происходит что-то вроде зацикливания и конечный результат получить не удается.

Текст функции:
Код удален из-за поломки темы по его причине. Приложите код текстовым файлом
Соответственно , как уже понятно по этому примеру работы функции, если мы будем иметь матрицу более большого порядка, количество этих действий просто огромное. Можно ли каким-то образом изменить замену элементов,чтобы все считалось?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2015, 14:30
Ответы с готовыми решениями:

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

Сформировать матрицу из случайных значений, подсчитать сумму её элементов, вывести матрицу и сумму на экран
Задание: Создать двумерный массив случайных чисел А.Найти сумму элементов массива.Вывести массив на экран в виде таблицы и сумму.

Занесение значений в БД
Приветствую, не могу занести значение "y" в БД. Значение "x" с лёгкостью прописалость. Помогите, пожалуйста. <form name='regform'...

15
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 00:31  [ТС]
помогите, пожалуйста! уже не знаю, как исправить
Вложения
Тип файла: txt код.txt (8.5 Кб, 15 просмотров)
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.03.2015, 00:40
Лаура137, а это действие можно с любыми матрицами проводить?
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 01:20  [ТС]
S_el, это действие в смысле замена элементов? не поняла Вас
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.03.2015, 08:14
Цитата Сообщение от Лаура137 Посмотреть сообщение
это действие в смысле замена элементов?
В том коде который вы прикрепили файлом я увидел только функцию распаковки,а дальше вызывается функция упаковки.Отсюда и вопрос.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 20:40  [ТС]
S_el, ой, точно, я ошиблась, извините. функция упаковки, я вставила не тот код.
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
33
34
35
36
37
function [Zapis] = Upakovka(matrix)
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
S=0;
E=0; 
M=0;
[m, n] = size(matrix);
 
for i=1:m  
    for j=1:n
        if matrix(i,j) <0 % число отрицательное
            S = '1'; % в бит знака единица
            if abs(matrix(i,j)) <= 496 % если элемент матрицы меньше или равен 496 (если 496/16=31)
           M = dec2bin(abs((round(matrix(i,j)/16))),5); % берем модуль, делим на 16, отсекаем дробную часть
            E = '0'; % в бит порядка ноль
            else
               M = dec2bin(abs((round(matrix(i,j)/16)/32)),5);% берем модуль, делим на 16, дополнительно делим на 32, отсекаем дробную часть 
              E = '1'; % в бит порядка единица
            end; %добавила запятую
            W = bin2dec([S E M]);
           Zapis(i,j) = W % записывам знак, порядок, мантиссу
        else % число положительное
            S = '0'; % в бит знака ноль
            if matrix(i,j) <= 496 % если элемент матрицы меньше или равен 496 (если 496/16=31)
           M = dec2bin(round((matrix(i,j)/16)),5);% делим на 16, отсекаем дробную часть
         E = '0'; % в бит порядка ноль
            else
              M = dec2bin(round(((matrix(i,j)/16)/32)),5); % делим на 16,дополнительно делим на 32, отсекаем дробную часть
            E = '1'; % в бит порядка единица
            end; %добавила запятую
           W = bin2dec([S E M]);
        
        Zapis(i,j) = W % записывам знак, порядок, мантиссу
        end
    end
end
end
Скорее всего я что-то намудрила с циклами, но не могу никак исправить
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.03.2015, 21:00
Цитата Сообщение от Лаура137 Посмотреть сообщение
Скорее всего я что-то намудрила с циклами, но не могу никак исправить
А вы можете еще раз сформулировать вопрос?При больших матрицах вычисления не проводятся?
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 21:02  [ТС]
S_el, да. если я беру матрицу большого размера, то вычисление то ли зацикливается, не знаю. но конечный результат я не получаю.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.03.2015, 21:07
Цитата Сообщение от Лаура137 Посмотреть сообщение
да. если я беру матрицу большого размера, то вычисление то ли зацикливается, не знаю. но конечный результат я не получаю.
Уберите промежуточный вывод.Работа с потоками ввода/вывода практически всегда значительно замедляет общую длительность вычислений.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 21:13  [ТС]
S_el, а каким образом убрать его?
Цитата Сообщение от Лаура137 Посмотреть сообщение
Zapis(i,j) = W % записывам знак, порядок, мантиссу
я не знала, как именно лучше поместить полученные элементы в матрицу, поэтому записала как знала, может есть другой способ, особо не нашла(
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
19.03.2015, 21:18
Лучший ответ Сообщение было отмечено Лаура137 как решение

Решение

Цитата Сообщение от Лаура137 Посмотреть сообщение
а каким образом убрать его?
Да просто ; добавить.

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
33
34
35
36
37
function [Zapis,timer] = Upakovka(matrix)
tic()
S=0;
E=0; 
M=0;
[m, n] = size(matrix);
 
for i=1:m  
    for j=1:n
        if matrix(i,j) <0 % число отрицательное
            S = '1'; % в бит знака единица
            if abs(matrix(i,j)) <= 496 % если элемент матрицы меньше или равен 496 (если 496/16=31)
           M = dec2bin(abs((round(matrix(i,j)/16))),5); % берем модуль, делим на 16, отсекаем дробную часть
            E = '0'; % в бит порядка ноль
            else
               M = dec2bin(abs((round(matrix(i,j)/16)/32)),5);% берем модуль, делим на 16, дополнительно делим на 32, отсекаем дробную часть 
              E = '1'; % в бит порядка единица
            end; %добавила запятую
            W = bin2dec([S E M]);
           Zapis(i,j) = W;% записывам знак, порядок, мантиссу
        else % число положительное
            S = '0'; % в бит знака ноль
            if matrix(i,j) <= 496 % если элемент матрицы меньше или равен 496 (если 496/16=31)
           M = dec2bin(round((matrix(i,j)/16)),5);% делим на 16, отсекаем дробную часть
         E = '0'; % в бит порядка ноль
            else
              M = dec2bin(round(((matrix(i,j)/16)/32)),5); % делим на 16,дополнительно делим на 32, отсекаем дробную часть
            E = '1'; % в бит порядка единица
            end; %добавила запятую
           W = bin2dec([S E M]);
        
        Zapis(i,j) = W; % записывам знак, порядок, мантиссу
        end
    end
end
timer = toc()
end
Добавил вывод в качестве возвращаемого значения длительность вычислений.Можете сравнить для небольших матриц разницу.Например,для матрицы 18 на 18 разница получилась 12-кратная.
1
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 21:27  [ТС]
S_el, спасибо огромное, теперь вычисляет! очень тяжело с матлабом на самом деле после delphi и ему подобного. не думала никогда, что тут такие тонкости даже с поставленными запятыми
0
19.03.2015, 21:34

Не по теме:

Цитата Сообщение от Лаура137 Посмотреть сообщение
спасибо огромное, теперь вычисляет! очень тяжело с матлабом на самом деле после delphi и ему подобного. не думала никогда, что тут такие тонкости даже с поставленными запятыми
Да нет,в Matlab как раз все просто,это вы никогда на C,наверное,не писали.
Хотя говорят в Python,F# еще веселее,из-за пробельного символа логика программы может изменится кардинально,по сравнению с этим меркнет любимая ошибка начинающих C/C++ программистов
C++
1
if(x=5){...}

0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 48
19.03.2015, 21:42  [ТС]
S_el,не знаю, как делать, чтобы сообщений шли с пометкой не по теме(
с С знакома, но это знакомство произошло еще 5 лет назад, на начальном уровне на самом деле, многострочного кода не писали. а Питон да, достаточно своеобразный язык, тоже изучали его. не говорю,что матлаб сложен, по мне он чуть сложнее gpss, но намного легче си++, делфи и их разновидностей, но со своими отдельными спецификами
0
19.03.2015, 21:47

Не по теме:

Цитата Сообщение от Лаура137 Посмотреть сообщение
не знаю, как делать, чтобы сообщений шли с пометкой не по теме(
Выделяете текст и помечаете тегом OFF(кнопка над полем ввода сообщения).

0
19.03.2015, 21:51  [ТС]

Не по теме:

S_el, ох, спасибо вам! теперь буду знать

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2015, 21:51
Помогаю со студенческими работами здесь

Занесение значений в StringGrid
Здравствуйте, при написании кода программы возникла проблема с занесением значений из Combobox в stringgrid. При переносе значений,...

Занесение значений БД в массив
Добрый день, имею метод, в котором заношу данные из БД в массив, но после &quot;SQLDataReader&quot; программа не идет дальше и выходит из...

Занесение значений из Combobox в ячейки
Как переделать, чтобы не вниз следующее значение вводилось,а вправо. Dim LastRow As Long LastRow =...

Занесение значений в структуру из файла
Помоги пожалуйста,такая проблема:не могу занести значения в структуру из файла с помощью с++,где ошибка?

Получить новую матрицу умножением элементов первой матрицы на наибольшее из значений элементов соответствующий строки второй матрицы
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждой строки первой матрицы на...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru