[Scilab-users] How to convert the ~ input placeholder <= Re: convert matlab code to scilab
Samuel Gougeon
sgougeon at free.fr
Mon Nov 25 21:20:52 CET 2019
Le 23/11/2019 à 15:35, Samuel Gougeon a écrit :
> HelloPhilipp, and to all (former ;-) matlabers,
>
> Le 16/10/2019 à 11:46, P M a écrit :
>> Dear experts,
>>
>> trying to convert a matlab code to scilab I come across following line:
>> [~,~,Minstances_hat] = unique(B(:));
>> How to replace the "~" symbol?
>> B is the blue channel of a RGB image...hence a m x n matrix of
>> integers (type(B) = 8 )
>
>
> This issue is now reported as bug 16250
> <http://bugzilla.scilab.org/show_bug.cgi?id=16254>.
>
> Solving this issue would improve the converter.
> I may contribute to solve it. However, I do not use to use Matlab or
> Octave. So i don't know how the ~ placeholder set in the list of
> /inputs/ is processed inside the called function. This message is a
> call for information about this topic.
>
> Ignoring an output is trivial. As suggested by Stéphane, the ans
> variable is a good candidate as replacement for ~,
> just as a fake recipient, as in "[~, ia] = unique(A)" => "[ans, ia]
> = unique(A)"
>
> The meaning of ignoring an input is a priori completely different, at
> least from a Scilab point of view.
>
> This leads to the fact that, on the "function ..." line, the converter
> will have to distinguish the list of inputs from the list of outputs,
> and then process the same ~ character in 2 different ways.
> This processing would have to run also when the "function ..." line is
> split on several rows with the "..." continuation marks.
>
> First, i will need an actual example of function call with ~ in the
> input list, runnable in Octave.
> Any compact suggestion is welcome.
> At least 2 use cases are expected: one calling a function written in
> Octave/Matlab language (improperly called "macros" in Scilab), the
> other one calling a hard-coded function.
>
> Let's consider the first case, with a "macro":
>
> * What does the ~ sent placeholder pass to the function? How is it
> detected/detectable inside the macro ?
> * How is it processed by the function? Is there a generic default
> processing, as replacing it with the empty matrix [], or whatever
> else?
>
Where is the crowd of matlabers?
The page describing this feature:
https://fr.mathworks.com/help/matlab/matlab_prog/ignore-function-inputs.html
But i do not clearly understand it.
Apparently, "canceling" an input is done (only?) at the function
definition, not when calling it, unlike for the outputs.
If so, then /ans/ could also be used as a replacement, meaning that
anyway this input won't be used inside the function.
A test of call with Octave yields an error:
>> function [r, s] = funtest(a,b,c)
end
>> funtest(1,~,3)
parse error:
invalid use of empty argument (~) in index expression
>>> funtest(1,~,3)
^
>>
Any further insight is welcome.
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20191125/4c478db9/attachment.htm>
More information about the users
mailing list