Re: [求救]'.'和'~'的用法

作者: sppmg (sppmg)   2017-11-04 22:09:22
※ 引述《kazaf1982 (kazaf)》之銘言:
: 在看別人寫的程式碼 但是有些不解
: 所以想請問板上的前輩
: 第一個問題
: clear all;clc;
: addpath('./code');
: para.img_path = './img_data/single_data/';
: para.result_path = './img_output/';
: 在上面的程式碼中,不是很了解'para.'的這個用法
: para是一個特定的用法嗎?
這要看你的 para 是什麼,不過就兩種可能。
1. structure
mantlab doc:
> A structure array is a data type that groups related data
> using data containers called fields. Each field can contain
> any type of data. Access data in a field using dot notation
> of the form structName.fieldName.
簡單說就是結構變數含有多個「欄位」(field),以「.」存取。各欄位可以存放任意
型態的資料,如陣列等等。
定義語法:
s = struct(field1,value1,...,fieldN,valueN)
例:
> s = struct('a', 1, 'b', [1:3])
> s.a
ans = 1
> s.b
ans =
1 2 3
matlab 可以直接用 s.a = 1 來指定,不一定要用 struct 函數。
2. Object
物件為包含自有方法(函數)與屬性(變數)的「東西」。
所以你會在程式中看到這種表達方式:
sppmg.name
sppmg.eat(food_a)
前者為 sppmg 物件的屬性,用起來就和普通變數一樣,可用 = 指定
(前提是這屬性被定義成可改)
後者為 eat 方法(函數),用起來和一般函數一樣。「()」在 matlab 中可略,
所以在一些背景執行程式中會看到 xxxx.start 這種
(timer 好像可以用 t.start ,但文件是寫 start(t) )
詳細的定義方式見 class 說明。也可看:
https://www.mathworks.com/help/matlab/matlab_oop/create-a-simple-class.html
: 第二個問題
: [imvector, ~, DisVector]=GetImVector(img, Scale, Scale,0);
: 在輸入這邊的'~'這個符號代表什麼意思?
: 我只知道這是一個NOT的符號
: 但不知道用在output的時候代表什麼?
: 謝謝
同推文所說:為了省略。
以 max 函數為例:
mantlab doc:
M = max(A)
[M,I] = max(___)
M -> Maximum values
I -> Index to maximum values
所以如果你只需要 I 而不用 M,為了讓程式使用 [M,I] 這種輸出格式就必須用 ~ 佔位
[~,I] = max(A)
(註:函數中可用 nargout 取得輸出參數個數,可依此改變程式運作。)
作者: kazaf1982 (kazaf)   2017-11-10 12:53:00
感恩!

Links booklink

Contact Us: admin [ a t ] ucptt.com