批處理感知器算法的代碼matlab
w1=[1,0.1,1.1;1,6.8,7.1;1,-3.5,-4.1;1,2.0,2.7;1,4.1,2.8;1,3.1,5.0;1,-0.8,-1.3;
1,0.9,1.2;1,5.0,6.4;1,3.9,4.0];
w2=[1,7.1,4.2;1,-1.4,-4.3;1,4.5,0.0;1,6.3,1.6;1,4.2,1.9;1,1.4,-3.2;1,2.4,-4.0;
1,2.5,-6.1;1,8.4,3.7;1,4.1,-2.2];
w3=[1,-3.0,-2.9;1,0.5,8.7;1,2.9,2.1;1,-0.1,5.2;1,-4.0,2.2;1,-1.3,3.7;1,-3.4,6.2;
1,-4.1,3.4;1,-5.1,1.6;1,1.9,5.1];
figure;
plot(w3(:,2),w3(:,3),'ro');
hold on;
plot(w2(:,2),w2(:,3),'b+');
W=[w2;-w3];%增廣樣本規范化
a=[0,0,0];
k=0;%記錄步數
n=1;
y=zeros(size(W,2),1);%記錄錯分的樣本
while any(y<=0)
k=k+1;
y=a*transpose(W);%記錄錯分的樣本
a=a+sum(W(find(y<=0),:));%更新a
if k >= 250
break
end
end
if k<250
disp(['a為:',num2str(a)])
disp(['k為:',num2str(k)])
else
disp(['在250步以內沒有收斂,終止'])
end
%判決面:x2=-a2*x1/a3-a1/a3
xmin=min(min(w1(:,2)),min(w2(:,2)));
xmax=max(max(w1(:,2)),max(w2(:,2)));
x=xmin-1:xmax+1;%(xmax-xmin):
y=-a(2)*x/a(3)-a(1)/a(3);
plot(x,y)
標簽:
批處理
算法matlab
上傳時間:
2016-11-07
上傳用戶:a1241314660
#include <iostream.h>
#include <string.h>
#include <iomanip.h>
#include "Stud.h"
Stud::Stud(){}
char *Stud::getno() //獲取學號
{
return no;
}
char *Stud::getname() //獲取姓名
{
return name;
}
char *Stud::getsex() //獲取性別
{
return sex;
}
char *Stud::getminzu() //獲取民族
{
return minzu;
}
char *Stud::getaddress() //獲取出生地
{
return address;
}
char *Stud::getbirth() //獲取出生年月
{
return birth;
}
int Stud::gettag() //獲取姓名
{
return tag;
}
void Stud::changeno(char n[]) //設置學號
{
strcpy(no,n);
}
void Stud::changename(char na[]) //設置姓名
{
strcpy(name,na);
}
void Stud::changesex(char s[]) //設置性別
{
strcpy(sex,s);
}
void Stud::changeminzu(char m[]) //設置民族
{
strcpy(minzu,m);
}
void Stud::changeaddress(char a[]) //設置出生地
{
strcpy(address,a);
}
void Stud::changebirth(char b[]) //設置出生年月
{
strcpy(birth,b);
}
void Stud::addstudent(char *rn,char *rna) //增加學生
{
strcpy(no,rn);
strcpy(name,rna);
}
void Stud::addstudent(char *rn,char *rna,char *rs,char *rm,char *ra,char *rb) //增加學生
{
tag=0;
strcpy(no,rn);
strcpy(name,rna);
strcpy(sex,rs);
strcpy(minzu,rm);
strcpy(address,ra);
strcpy(birth,rb);
}
void Stud::delstud() //設置刪除標記
{
tag=1;
}
void Stud::disp() //輸出學生信息
{
cout<<setw(15)<<no<<setw(10)<<name<<setw(10)<<sex<<setw(10)<<minzu<<setw(10)<<address<<setw(10)<<birth<<endl;
}
void Stud::display() //輸出學生信息
{
cout<<setw(15)<<no<<setw(10)<<name;
}
標簽:
學生
上傳時間:
2016-12-29
上傳用戶:767483511
是否要先打開ALLEGRO?
不需要(當然你的機器須有CADENCE系統)。生成完封裝后在你的輸出目錄下就會有幾千個器件(全部生成的話),默認輸出目錄為c:\MySym\.
Level里面的Minimum, Nominal, Maximum 是什么意思?
對應ipc7351A的ABC封裝嗎?
是的
能否將MOST, NOMINAL,
LEAST三種有差別的封裝在命名上也體現出差別?
NOMINAL
的名稱最后沒有后綴,MOST的后綴自動添加“M”,LEAST的后綴自動添加“L”,你看看生成的庫名稱就知道了。(直插件以及特別的器件,如BGA等是沒有MOST和LEAST級別的,對這類器件只有NOMINAL)
IC焊盤用長方形好像比用橢圓形的好,能不能生成長方形的?
嗯。。。。基本上應該是非直角的焊盤比矩形的焊盤好,我記不得是AMD還是NS還是AD公司專門有篇文檔討論了這個問題,如果沒有記錯的話至少有以下好處:信號質量好、更省空間(特別是緊密設計中)、更省錫量。我過去有一篇帖子有一個倒角焊盤的SKILL,用于晶振電路和高速器件(如DDR的濾波電容),原因是對寬度比較大的矩形用橢圓焊盤也不合適,這種情況下用自定義的矩形倒角焊盤就比較好了---你可以從網上另外一個DDR設計的例子中看到。
當然,我已經在程序中添加了一選擇項,對一些矩形焊盤可以選擇倒角方式.
剛才試了一下,感覺器件的命名的規范性不是太好,另好像不能生成器件的DEVICE文件,我沒RUN完。。。
這個程序的命名方法基本參照IPC-7351,每個人都有自己的命名嗜好,仍是不好統一的;我是比較懶的啦,所以就盡量靠近IPC-7351了。
至于DEVICE,的選項已經添加 (這就是批量程序的好處,代碼中加一行,重新生產的上千上萬個封裝就都有新東西了)。
你的庫都是"-"的,請問用過ALLEGRO的兄弟,你們的FOOTPRINT認"-"嗎?反正我的ALLEGRO只認"_"(下劃線)
用“-”應該沒有問題的,焊盤的命名我用的是"_"(這個一直沒改動過)。
部分絲印畫在焊盤上了。
絲印的問題我早已知道,只是盡量避免開(我有個可配置的SilkGap變量),不過工作量比較大,有些已經改過,有些還沒有;另外我沒有特別費功夫在絲印上的另一個原因是,我通常最后用AUTO-SILK的來合并相關的層,這樣既方便快捷也統一各個器件的絲印間距,用AUTO-SILK的話絲印線會自動避開SOLDER-MASK的。
點擊allegro后命令行出現E- Can't change to directory:
Files\FPM,什么原因?
我想你一定是將FPM安裝在一個含空格的目錄里面了,比如C:\Program
Files\等等之類,在自定義安裝目錄的時候該目錄名不能含有空格,且存放生成的封裝的目錄名也不能含有空格。你如果用默認安裝的話應該是不會有問題的,
默認FPM安裝在C:\FPM,默認存放封裝的目錄為C:\MYSYM
0.04版用spb15.51生成時.allegro會死機.以前版本的Allegro封裝生成器用spb15.51生成時沒有死機現象
我在生成MELF類封裝的時候有過一次死機現象,估計是文件操作錯誤導致ALLEGRO死機,原因是我沒有找到在skill里面直接生成SHAPE焊盤的方法(FLASH和常規焊盤沒問題),
查了下資料也沒有找到解決方法,所以只得在外部調用SCRIPT來將就一下了。(下次我再查查看),用SCRIPT的話文件訪問比較頻繁(幸好目前MELF類的器件不多).
解決辦法:
1、對MELF類器件單獨選擇生成,其它的應該可以一次生成。
2、試試最新的版本(當前0.05)
請說明運行在哪類器件的時候ALLEGRO出錯,如果不是在MELF附近的話,請告知,謝謝。
用FPM0.04生成的封裝好像文件都比較大,比如CAPC、RES等器件,都是300多K,而自己建的或采用PCB
Libraries
Eval生成的封裝一般才幾十K到100K左右,不知封裝是不是包含了更多的信息?
我的每個封裝文件包含了幾個文字層(REF,VAL,TOL,DEV,PARTNUMBER等),SILK和ASSEM也是分開的,BOND層和高度信息,還有些定位線(在disp層),可能這些越來越豐富的信息加大了生成文件的尺寸.你如果想看有什么內容的話,打開所有層就看見了(或REPORT)
非常感謝
LiWenHui 發現的BUG, 已經找到原因,是下面這行:
axlDBChangeDesignExtents(
'((-1000 -1000) (1000
1000)))
有尺寸空間開得太大,后又沒有壓縮的原因,現在生成的封裝也只有幾十K了,0.05版已經修復這個BUG了。
Allegro封裝生成器0.04生成do-27封裝不正確,生成封裝的焊盤的位號為a,c.應該是A,B或者1,2才對.
呵呵,DIODE通常管腳名為AC(A
= anode, C = cathode) 也有用AK 或 12的, 極少見AB。
除了DIODE和極個別插件以及BGA外,焊盤名字以數字為主,
下次我給DIODE一個選擇項,可以選擇AC 或 12 或
AK,
至于TRANSISTER我就不去區分BCE/CBE/ECB/EBC/GDS/GSD/DSG/DGS/SGD/SDG等了,這樣會沒完沒了的,我將對TRANSISTER強制統一以數字編號了,如果用家非要改變,只得在生成庫后手工修改。
標簽:
Footprint
Maker
0.08
FPM
skill
上傳時間:
2018-01-10
上傳用戶:digitzing