miércoles, 10 de noviembre de 2010

Eliminar una fila en una matriz de Scilab

Soy totalmente nuevo en Scilab, no llevo utilizandolo ni una semana, pero ya he necesitado hacer cosas raras con el así que ya le estoy tomando cariño. ;-)

He buscado alguna forma para eliminar una fila de una matriz en Scilab, me rompí la cabeza con un millón de formas de hacerlo, primero creí que con


A = [A(1:i-1, :); A(i+1:$, :)];

bastaba pero en algunas ocasiones me daba un error de apuntadores. Después programé una función removeRow:

function A = removeRow(A, i)
  if i == 1 then
    if size(A, 1) <= 1 then
      A = [];
    else
      A = A(2:$,:);
    end
  elseif i == size(A, 1) then
    A = A(1:$-1, :);
  else
    A = [A(1:i-1, :); A(i+1:$, :)];
  end
endfunction


Pero al final encontré que bastaba con hacer

A(i,:) = [];


Vaya forma tuve de complicarme la vida.... :-P

2 comentarios:

  1. jeje, gracias! me sirvio! (o me servira para el proyecto que estoy haciendo)

    :D

    ResponderEliminar
  2. hola... esto que esto haciendo tambien es de scilab, pero estoy teniendo problemas... me podrías ayudar

    lo que pasa es que tengo este programa que revuleve las letras de la palabra que le pongas.. el problema es que no se como hacer para que al revolverlas no repita letras esto es lo que tengo..
    me podrías ayudar a que solo salgan las letras sin repetirse en orden aleatorio?
    esto es lo que tengo

    function scramble(sWord)

    sNewWord=""
    word = sWord

    for i=1:length(sWord)
    iRandom = floor((rand() * length(word)) + 1)
    sNewWord = sNewWord + part(word,iRandom)
    end

    disp("what is the word scrambled?: ")
    disp(sNewWord)
    endfunction

    Yo estoy segura que el error esta en en el renglon de
    sNewWord = sNewWord + part(word,iRandom)
    pero no se exactamnte como ponerlo... me podrías decir como ponerlo
    gracias

    ResponderEliminar