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

Индексация масива в Матлаб

28.10.2013, 01:05. Показов 3573. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня массив. на пример:
arr=[10, 2, 5, 6, 15];
я хочу получить массив с порядком сортировки первого (который я сортировать не должен!). В данном случае:
[4, 1, 2, 3, 5]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2013, 01:05
Ответы с готовыми решениями:

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл "Press.txt" записана текстовая информация : variables={'1.Первый', ' 2.Второй',...

Заполнение масива по формуле и нахождение наименьшего положительного элемента масива
Итак условие задачи: Написать программу для заполнения масива з 20 элементов по формуле a_i=\left(-1 \right)^i\,\frac{i^2}{i-1} и...

Найти номер макс. элемента масива и произведение элементов масива между 1-м и 2-м нулевыми элементами
В одномерном масиве,состоящем из н элементов,вычеслить номер макс. масива,и произведение элементов масива,рассположеных мнжду 1-м и 2-м...

14
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
28.10.2013, 09:21
См. sort (тот вызов, что с двумя возвращаемыми параметрами)
2
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
28.10.2013, 22:01  [ТС]
очень полезно!
по умолчанию индекс 1 получает максимальный элемент. есть ли тривиальный способ сделать наоборот- минимум получает индекс 1?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
29.10.2013, 14:57
LM87, сортировать по убыванию:
[b idx] = sort(arr,'descend');
1
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
29.10.2013, 17:33  [ТС]
что-то совсем не то получается. мой код:
Matlab M
1
2
3
clear all;
arr=[0.8,0.169,3.835, 0.0263 ,0.144];
[~, ind] = sort(arr,'descend');
выдает мне:
ind=[3,1,2,5,4]
вместо ожидаемого:
ind=[4,3,5,1,2]
может быль я плохо описал задачу- мне над что-бы каждому числу соответствовал его "порядковый номер" , то есть под числом 0,02(самым маленьким) было написано "1" а под числом 3,8(самым большим) было написано "5".
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
29.10.2013, 17:43
Дык ind это индексы в первоначальном (не сортированном массиве)!
Да, я плохо понимаю, что делаю, но советую сделать так:
Matlab M
1
2
3
4
5
clear all;
arr=[0.8,0.169,3.835, 0.0263 ,0.144];
[~, ind] = sort(arr,'descend');
i = 1:length(arr);
idx = i(ind)
0
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
29.10.2013, 18:32  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Дык ind это индексы в первоначальном (не сортированном массиве)!
что весьма эстетично но совершенно не то что я хочу .... в вашем коде не понял пятую строку. а результат что ind=inx тему не развивает.

Добавлено через 39 минут
нашел решение. немного варварское для матлаба:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
A=arr;
n=length(A);
ind=1:n;
inx= zeros(1,n);
i=n;
while i>0
    [~,maxI]=max(A);
    inx(maxI)=i;
    A(maxI)=-1;
    i=i-1;
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
29.10.2013, 18:32
Так чтоль?
Matlab M
1
2
3
4
arr=[0.8,0.169,3.835, 0.0263 ,0.144];
[b, ind] = sort(arr,'descend');
b
i = 1:length(arr)
1
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
29.10.2013, 18:55  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Так чтоль?
Matlab M
1
2
3
4
arr=[0.8,0.169,3.835, 0.0263 ,0.144];
[b, ind] = sort(arr,'descend');
b
i = 1:length(arr)
arr изменять нельзя, он святой! написать его сортированным это святотатство!
Я уже нашел решение (мое прошлое сообщение).
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
29.10.2013, 19:19
хозяин - барин правда я так и не понял задание)

а как тебе такое безумие?
Matlab M
1
2
3
4
5
arr=[0.8,0.169,3.835, 0.0263 ,0.144]; 
[~, ind] = sort(arr,'descend');
[~,idz] = sort(ind);
arr
idz
0
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
29.10.2013, 20:31  [ТС]
хех... как просто оказывается.


Задание имеет очень большой смысл- у меня матрица с кучей "сырых" данных про планеты из которых я должен вынести полезную информацию.
Та часть которую сейчас делаю это для каждой планеты в системе написать какая она по счету от своей звезды (каждый массив это список радиусов). Менять порядок рядов в матрице- в не моей компетенции. я только могу добавить еще один столбик в матрицу "порядковый номер".
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
30.10.2013, 09:12
шо? заработало? (я это написал чисто по наитию спинного мозга )
0
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
04.11.2013, 19:44  [ТС]
добавим гадости для разнообразия....
Та же задание что и раньше, только есть шанс что вместо числа будет НАН. Я хочу чтоб каждый нан получил индекс 0 а все остальные числа в массиве проучили индексы как в прошлой версии(именно так как раньше с двумя сортами), как будто этого НАНа и не было в помине.
типа массив [2, nan, 5, 3]
выдаст [1,0,3,2]
(оказывается что в моей матрице несколько дырок.)
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.11.2013, 20:52
LM87, arr(isnan(arr)) = 0;
0
1 / 1 / 1
Регистрация: 28.10.2013
Сообщений: 189
05.11.2013, 00:03  [ТС]
Matlab M
1
idz(isnan(arr)) = 0;
и всё... а я лупы пытался писать....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2013, 00:03
Помогаю со студенческими работами здесь

Дано масив чисел. Найти количество элементов масива, которые расположены между max и min элементами масива
Помогите, пожалуйста, вычислить количество элементов между максимальным и минимальным элементами. Вот я нашла максимум и минимум, а дальше...

При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается и происходит дамп
При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается. При этом в нем не запускаются никакие файлы....

Найти среднее арифметическое для масива B и среднее геометрическое масива С
Помогите пожалуйста решить задачу: від'ємні елементи масиву А(10) записати в масив В, додатні елементи масиву А записати масив С, знайти...

матлаб
Привет,ребят помогите пожалуйста исправить ошибку в функции. x=1:0.1:2; ...

Сортировка масива
Есть 2 масива похожих друг на друга Первый Array ( => Array ( =>...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru