LINUX.ORG.RU

Scilab - формирование нулевой матрицы


0

0

Нужно сформировать матрицу размером WL/2 на wn.

spgram = zeros(WL/2, wn);

на что выдается сообщение об ошибке: Неверный размер аргумента 2. При чем wn - целое число, и если заменить переменную на число то все работает!

Подскажите в чем проблема!


Попробуй засобачить туда функцию округления или обрезания дробной части. Не знаю, как они в сцилабе называются.

nnz ★★★★
()
Ответ на: комментарий от CBP

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


-->spgram = zeros(6.678, 3.54);

-->spgram(6,3)
ans =

0.

-->spgram(6,4)
!--error 21
invalid index


-->spgram(7,3)
!--error 21
invalid index

WerNA ★★★★★
()
Ответ на: комментарий от WerNA

У меня поблема не в округлении, а в том что, если я пишу аргумент функции переменной, то вылазит ошибка, а если просто число, например zeros(WL/2, 57), то всё работает!

Возможно, в скайлабе функцие нельзя передать переменную?

CBP
() автор топика
Ответ на: комментарий от CBP

Как это нельзя? Так не бывает... Ну вот проверил сейчас с переменными, хоть какими (целыми, дробными) всё работает. У тебя ошибка номер какая? Я попробовал задавать нелепые значения аргументов - комплексный, массив - вылазят ошибки 52 и 89. Может у тебя wn каким-то образом вычисляется в виде массива или ещё чего-то(?) до этого..?

зы кстати, надо будет попробовать хоть что-нибудь посчитать на нём, а то я всё в ворованной mathematica сижу...

WerNA ★★★★★
()
Ответ на: комментарий от WerNA

Вот весь код

wavfile = '/mnt/media/study/Speech_Recognation/scilab/a.wav';

WL = 150; //длина окна в семплах

win = window('hm',WL); //окно Хемминга

s = wavread(wavfile,'size') //количество семплов

wn = round(s/WL) //Количество оконных выборок в сигнале

spgram = zeros(WL/2,wn) //создание матрицы, заполненной нулями

Сообщение об ошибке

spgram = zeros(WL/2,wn) //создание матрицы, заполненной нулями !--error 89 Неверный размера аргумента 2.

CBP
() автор топика
Ответ на: комментарий от CBP

Удивителен скайлаб!!!

Написал spgram = zeros(WL/2,wn(2)) и получил, что хотел!

wavread(wavfile,'size') возвращает массив [каналы семплы]

Вот по документации wavread(wavfile,'size') returns the size of the audio data contained in the file in place of the actual audio data, returning the vector as [channels samples].

Внимательнее надо читать!

Камрад, WerNA -- перелазь, Скайлаб шустр!

CBP
() автор топика
Ответ на: комментарий от WerNA

>зы кстати, надо будет попробовать хоть что-нибудь посчитать на нём, а то я всё в ворованной mathematica сижу...

Емнип, сцилаб не умеет аналитики (т.е. выводить формулы) — только считать. После долгого секаса с попытками включить в одну систему сцилаб, максиму и гнуплот, мы на это забили и стали юзать матлаб (благо лицензия есть). Да и по части вычислительной математики у него возможности гораздо больше, чем у того же сцилаба.

nnz ★★★★
()
Ответ на: комментарий от CBP

Так всё-таки там массив был =) А перелезть наверное полностью не смогу, но попробую что-нибудь сбацать!

WerNA ★★★★★
()
Ответ на: комментарий от nnz

Ну да, с аналитикой можно сказать никак. Вселенское счастье наступит, когда Вольфрам исходники Математики под GPL откроет =)

WerNA ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.