|
|
  |
Индексация массива в MATLAB, можно от 0? |
|
|
|
Mar 10 2010, 15:32
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(mdmitry @ Mar 10 2010, 17:14)  А обратный переход каков? Можете индексы в программе сами корректировать, но это не MATLAB-way. В MATLAB хороший стиль не делать явных циклов, по-возможности. Попробуйте написать цикл в стиле С и его правильно реализовать средствами MATLAB, оцените разницу в скоростях выполнения. Мне как таковой MATLAB нужен лишь для того чтобы реализовать алгоритм, который будет работать в железке, ну и соответственно написан он будет на Сях.... Так что MATLAB-way мне не нужен.
|
|
|
|
|
Mar 11 2010, 08:58
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
За что же многие люди брыжжа слюной не понимают как же они без него жили, без ентого чуда под названием MATLAB, еси он вот такую вот фигню сделать НЕ МОЖЕТ: CODE >> A=int16(ones(8,8)) A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> B=int16(ones(8,8)) B = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> A*B ??? Error using ==> mtimes Integer data types are not fully supported for this operation. At least one operand must be a scalar. Это же маразм.....
|
|
|
|
|
Mar 11 2010, 09:55
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(Andron_ @ Mar 11 2010, 15:49)  это вы не умеете им пользоваться нормально. нормально это всё считать в double? Цитата(Andron_ @ Mar 11 2010, 15:49)  зачем в этом примере тип int16? В этом примере не зачем... А в том алгоритме, который я пытаюсь реализовать очень даже зачем. Этот пример показывает что MATLAB матрицы типа int16 множить не умеет.
|
|
|
|
|
Mar 11 2010, 10:03
|
.NET developer
  
Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532

|
Цитата(igorenja @ Mar 11 2010, 15:55)  нормально это всё считать в double? а что такого? жалко 2КБ памяти при 4ГБ имеющихся? Цитата(igorenja @ Mar 11 2010, 15:55)  В этом примере не зачем... А в том алгоритме, который я пытаюсь реализовать очень даже зачем. Этот пример показывает что MATLAB матрицы типа int16 множить не умеет. напишите свою функцию - начнет уметь. правда зачем это нужно - пока вопрос.
|
|
|
|
|
Mar 11 2010, 10:25
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(Andron_ @ Mar 11 2010, 16:03)  а что такого? жалко 2КБ памяти при 4ГБ имеющихся? да ясное дело что в компе без разницы как считать, а если в микроконтроллере... и считать нужно много... Цитата(Andron_ @ Mar 11 2010, 16:03)  а что такого? жалко 2КБ памяти при напишите свою функцию - начнет уметь. правда зачем это нужно - пока вопрос. написать то не проблема. Вопрос в том: нафик тогда MATLAB в принципе?
|
|
|
|
|
Mar 11 2010, 10:32
|
.NET developer
  
Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532

|
Цитата(igorenja @ Mar 11 2010, 16:25)  да ясное дело что в компе без разницы как считать, а если в микроконтроллере... и считать нужно много... ну так считайте в контроллере int16. Матлаб при чем? Зачем при моделировании вам нужен именно этот тип данных в расчете? Вы вопрос конкретный задайте, что хотите получить из каких исходных данных.
|
|
|
|
|
Mar 11 2010, 10:44
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(Andron_ @ Mar 11 2010, 16:32)  Зачем при моделировании вам нужен именно этот тип данных в расчете? Хочется моделировать реальную ситуацию (а именно целочисленную математику, с возможными переполнениями и т.д.) а не идеальную... Да и вопроса то уже собственно нет... на негоответили в 3 ем посте... это так разговор не о чём.
|
|
|
|
|
Mar 11 2010, 11:55
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(igorenja @ Mar 11 2010, 11:58)  ??? Error using ==> mtimes Integer data types are not fully supported for this operation. At least one operand must be a scalar.
Это же маразм..... В MATLAB различаются операции над матрицами и над скалярами! * - скалярное умножение, один операнд должен быть скаляром .* - умножение матрицы на матрицу. Вам путь на exponenta
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
May 19 2010, 13:30
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата igorenja: За что же многие люди брыжжа слюной не понимают как же они без него жили, без ентого чуда под названием MATLAB, еси он вот такую вот фигню сделать НЕ МОЖЕТ: CODE >> A=int16(ones(8,8)) A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> B=int16(ones(8,8)) B = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> A*B ??? Error using ==> mtimes Integer data types are not fully supported for this operation. At least one operand must be a scalar.
Это же маразм..... Маразм - судить о предмете не зная его... Матлаб ориетирован на вычисления в даблах. Для всех остальных вычислений нужен специальный тулбокс. FixedPoint toolbox. Чтоб его задействовать достаточно объявить данные специальным образом. Код A=fi(ones(8,8),1,16,0);% 1- знаковые 16 - разрядность данных 0 скока бит под дробную часть B=fi(ones(8,8),1,16,0); A*B
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|