реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Индексация массива в MATLAB, можно от 0?
igorenja
сообщение Mar 10 2010, 08:41
Сообщение #1


Частый гость
**

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



Доброе время суток!
Скажите возможно ли в MATLABе изменить индекс начала вектора с 1 на 0, т.е. чтобы начальный элемент был доступен вот так: v(0).

Нимагу от единицы нумеровать после С... crying.gif
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Mar 10 2010, 11:14
Сообщение #2


Начинающий профессионал
*****

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



Цитата(igorenja @ Mar 10 2010, 11:41) *
Нимагу от единицы нумеровать после С... crying.gif

А обратный переход каков? laughing.gif
Можете индексы в программе сами корректировать, но это не MATLAB-way. В MATLAB хороший стиль не делать явных циклов, по-возможности. Попробуйте написать цикл в стиле С и его правильно реализовать средствами MATLAB, оцените разницу в скоростях выполнения.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Mar 10 2010, 12:25
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(igorenja @ Mar 10 2010, 11:41) *
Скажите возможно ли в MATLABе изменить индекс начала вектора с 1 на 0, т.е. чтобы начальный элемент был доступен вот так: v(0).

нет
Go to the top of the page
 
+Quote Post
igorenja
сообщение Mar 10 2010, 15:32
Сообщение #4


Частый гость
**

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



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


Мне как таковой MATLAB нужен лишь для того чтобы реализовать алгоритм, который будет работать в железке, ну и соответственно написан он будет на Сях.... Так что MATLAB-way мне не нужен.
Go to the top of the page
 
+Quote Post
igorenja
сообщение Mar 11 2010, 08:58
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 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.


Это же маразм.....
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 11 2010, 09:49
Сообщение #6


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



это вы не умеете им пользоваться нормально.

зачем в этом примере тип int16?
Go to the top of the page
 
+Quote Post
igorenja
сообщение Mar 11 2010, 09:55
Сообщение #7


Частый гость
**

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



Цитата(Andron_ @ Mar 11 2010, 15:49) *
это вы не умеете им пользоваться нормально.

нормально это всё считать в double?


Цитата(Andron_ @ Mar 11 2010, 15:49) *
зачем в этом примере тип int16?


В этом примере не зачем... А в том алгоритме, который я пытаюсь реализовать очень даже зачем.
Этот пример показывает что MATLAB матрицы типа int16 множить не умеет.
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 11 2010, 10:03
Сообщение #8


.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 множить не умеет.

напишите свою функцию - начнет уметь. правда зачем это нужно - пока вопрос.
Go to the top of the page
 
+Quote Post
igorenja
сообщение Mar 11 2010, 10:25
Сообщение #9


Частый гость
**

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



Цитата(Andron_ @ Mar 11 2010, 16:03) *
а что такого? жалко 2КБ памяти при 4ГБ имеющихся?

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

Цитата(Andron_ @ Mar 11 2010, 16:03) *
а что такого? жалко 2КБ памяти при напишите свою функцию - начнет уметь. правда зачем это нужно - пока вопрос.

написать то не проблема. Вопрос в том: нафик тогда MATLAB в принципе?
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 11 2010, 10:32
Сообщение #10


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



Цитата(igorenja @ Mar 11 2010, 16:25) *
да ясное дело что в компе без разницы как считать, а если в микроконтроллере... и считать нужно много...

ну так считайте в контроллере int16. Матлаб при чем? Зачем при моделировании вам нужен именно этот тип данных в расчете?

Вы вопрос конкретный задайте, что хотите получить из каких исходных данных.
Go to the top of the page
 
+Quote Post
igorenja
сообщение Mar 11 2010, 10:44
Сообщение #11


Частый гость
**

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



Цитата(Andron_ @ Mar 11 2010, 16:32) *
Зачем при моделировании вам нужен именно этот тип данных в расчете?

Хочется моделировать реальную ситуацию (а именно целочисленную математику, с возможными переполнениями и т.д.) а не идеальную... Да и вопроса то уже собственно нет... на негоответили в 3 ем посте... это так разговор не о чём.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Mar 11 2010, 11:55
Сообщение #12


Начинающий профессионал
*****

Группа: Свой
Сообщений: 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


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Andron_
сообщение Mar 11 2010, 13:30
Сообщение #13


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



>>* - скалярное умножение, один операнд должен быть скаляром
из-за ограниченной поддержки типа int16... в общем случае - может быть либо умножение матрицы на матрицу по соответствующим правилам, либо на скаляр...

>>.* - умножение матрицы на матрицу.
поэлементно...
Go to the top of the page
 
+Quote Post
thermit
сообщение May 19 2010, 13:30
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016