Lithium–sulfur (Li–S) batteries with high energy density and long cycle life are considered to be one of the most promising next-generation energy-storage systems beyond routine lithium-ion batteries. Various approaches have been proposed to break down technical barriers in Li–S battery systems. The use of nanostructured metal oxides and sulfides for high sulfur utilization and long life span of Li–S batteries is reviewed here. The relationships between the intrinsic properties of metal oxide/sulfide hosts and electrochemical performances of Li–S batteries are discussed. Nanostructured metal oxides/ sulfides hosts used in solid sulfur cathodes, separators/interlayers, lithium- metal-anode protection, and lithium polysulfides batteries are discussed respectively. Prospects for the future developments of Li–S batteries with nanostructured metal oxides/sulfides are also discussed.
上传时间: 2017-11-23
上传用户:653357637
photoshop软件(本例中使用CS5版本,当然各版本界面都大同小异) 界面篇 1 首先我们打开photoshop软件,界面就如下图所示了: 2 左侧的是工具箱调板,我们可以用鼠标单击相应的工具进行图片处理操作,鼠标右击可以进行某一工具选择(再使用熟练后,我们也可以按下相应的键盘键进行选择),如图: 3 右侧的是窗口调板,我们可以点击菜单中的窗口菜单,在下拉列表中选择我们需要的窗口调板,如图: 4 顶部的菜单栏中包含了全部photoshop常用的操作,我们不必去死记硬背,只要平时常用就会烂熟于心了。 5 在菜单栏的下方是属性栏,显示当前我们正在使用的工具的属性,如图: END 常用操作 1 打开一张图片,方法有三种:①使用菜单里面的打开命令;②使用快捷键Ctrl+O;③双击photoshop界面中心;④拖动想要处理的图片到photoshop中打开;⑤右键选择要处理的图片选择使用photoshop打开命令。 2 保存图片的方法:一般按下键盘上的快捷键Ctrl+S,或使用菜单保存命令(如果要另存的话就选择另存为选项;保存的图片可以选择任意格式,.psd是保存当前处理的所有步骤,下次打开还可以继续编辑,JPEG、png、gif格式就是处理好的图片格式) 3 历史记录面板的用法:我们处理图片的时候可能要反复修改获得最佳的效果,那么历史记录工具就可以很方便的返回之前我们的操作状态,如图,点击要恢复的步骤,即可恢复图片: END 使用技巧 如图所示黑色是前景色、白色是背景色,我们可以按下键盘上的X键进行前景色和背景色的互换: 图片移动操作,我们打开两张图片,想要移动其中的一张到另一张中,我们可以按住键盘的Ctrl键,使用鼠标拖动一张图片到另一张图片中,如图: 3 我们可以在处理图片的时候按下Z键使用放大镜放大图片的细节,处理图片的时候就会容易许多,我们可以按ATL键在放大和缩小之间切换! 4 我们可以按住键盘上的空格键,移动图片,对于处理大型的图片还是非常方便的! END 注意事项 photoshop入门相对来说比较简单,但熟练操作至少要3个月左右! 精通photoshop是一条非常漫长的路程,有时候会打退堂鼓,但只要多操作,多制作,慢慢的时间久了也就精了。
上传时间: 2017-12-07
上传用户:1506034115
photoshop软件(本例中使用CS5版本,当然各版本界面都大同小异) 界面篇 1 首先我们打开photoshop软件,界面就如下图所示了: 2 左侧的是工具箱调板,我们可以用鼠标单击相应的工具进行图片处理操作,鼠标右击可以进行某一工具选择(再使用熟练后,我们也可以按下相应的键盘键进行选择),如图: 3 右侧的是窗口调板,我们可以点击菜单中的窗口菜单,在下拉列表中选择我们需要的窗口调板,如图: 4 顶部的菜单栏中包含了全部photoshop常用的操作,我们不必去死记硬背,只要平时常用就会烂熟于心了。 5 在菜单栏的下方是属性栏,显示当前我们正在使用的工具的属性,如图: END 常用操作 1 打开一张图片,方法有三种:①使用菜单里面的打开命令;②使用快捷键Ctrl+O;③双击photoshop界面中心;④拖动想要处理的图片到photoshop中打开;⑤右键选择要处理的图片选择使用photoshop打开命令。 2 保存图片的方法:一般按下键盘上的快捷键Ctrl+S,或使用菜单保存命令(如果要另存的话就选择另存为选项;保存的图片可以选择任意格式,.psd是保存当前处理的所有步骤,下次打开还可以继续编辑,JPEG、png、gif格式就是处理好的图片格式) 3 历史记录面板的用法:我们处理图片的时候可能要反复修改获得最佳的效果,那么历史记录工具就可以很方便的返回之前我们的操作状态,如图,点击要恢复的步骤,即可恢复图片: END 使用技巧 如图所示黑色是前景色、白色是背景色,我们可以按下键盘上的X键进行前景色和背景色的互换: 图片移动操作,我们打开两张图片,想要移动其中的一张到另一张中,我们可以按住键盘的Ctrl键,使用鼠标拖动一张图片到另一张图片中,如图: 3 我们可以在处理图片的时候按下Z键使用放大镜放大图片的细节,处理图片的时候就会容易许多,我们可以按ATL键在放大和缩小之间切换! 4 我们可以按住键盘上的空格键,移动图片,对于处理大型的图片还是非常方便的! END 注意事项 photoshop入门相对来说比较简单,但熟练操作至少要3个月左右! 精通photoshop是一条非常漫长的路程,有时候会打退堂鼓,但只要多操作,多制作,慢慢的时间久了也就精了。
上传时间: 2017-12-07
上传用户:1506034115
kai li de dao hang GPS之家-专业版243
上传时间: 2017-12-15
上传用户:cyrs
TCL at2916电路图
上传时间: 2018-04-01
上传用户:guliqiang
基于简单易用的低功耗M4单片机STM32L476设计, L4系列中的性价比之王 分离式的NB模块设计,底板与NB小系统板可插拔,默认搭载NB101小系统板。 板载移远低功耗GPS定位模块L70-R。 板载GPS备用电源,支持GPS热启动,实现快速定位。 板载工业级的温湿度传感器SHT20,可用于极端条件下的温湿度采集。 板载环境光传感器。 板载优雅的白光LED灯珠。 板载MicroSD卡卡座,支持FATFS文件系统,可用于NB应用中的固件/数据存储。 板载USB转UART电路,支持NB模块和GPS模块切换到电脑端调试和使用。 板载4个用户按键和1个指示灯。 板载20Pin扩展GPIO,引出常用的I2C,SPI,UART,CAN等MCU外设。扩展无忧。 整板低功耗设计,可外接电池供电,背面留有电池接插件。 支持谷雨云透传平台,支持开发板数据透传到客户服务器或任意电脑等设备。 小巧灵活,开发板PCB面积比信用卡略大些。
上传时间: 2018-05-08
上传用户:pshr960405
#include <stdio.h> #include <stdlib.h> ///链式栈 typedef struct node { int data; struct node *next; }Node,*Linklist; Linklist Createlist() { Linklist p; Linklist h; int data1; scanf("%d",&data1); if(data1 != 0) { h = (Node *)malloc(sizeof(Node)); h->data = data1; h->next = NULL; } else if(data1 == 0) return NULL; scanf("%d",&data1); while(data1 != 0) { p = (Node *)malloc(sizeof(Node)); p -> data = data1; p -> next = h; h = p; scanf("%d",&data1); } return h; } void Outputlist(Node *head) { Linklist p; p = head; while(p != NULL ) { printf("%d ",p->data); p = p->next; } printf("\n"); } void Freelist(Node *head) { Node *p; Node *q = NULL; p = head; while(p != NULL) { q = p; p = p->next; free(q); } } int main() { Node *head; head = Createlist(); Outputlist(head); Freelist(head); return 0; } 2.顺序栈 [cpp] view plain copy #include <iostream> #include <stdio.h> #include <stdlib.h> ///顺序栈 #define MaxSize 100 using namespace std; typedef
上传时间: 2018-05-09
上传用户:123456..
#include <iostream> #include <stdio.head> #include <stdlib.head> #include <string.head> #define ElemType int #define max 100 using namespace std; typedef struct node1 { ElemType data; struct node1 *next; }Node1,*LinkList;//链栈 typedef struct { ElemType *base; int top; }SqStack;//顺序栈 typedef struct node2 { ElemType data; struct node2 *next; }Node2,*LinkQueue; typedef struct node22 { LinkQueue front; LinkQueue rear; }*LinkList;//链队列 typedef struct { ElemType *base; int front,rear; }SqQueue;//顺序队列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 //1.采用链式存储实现栈的初始化、入栈、出栈操作。 LinkList CreateStack()//创建栈 { LinkList top; top=NULL; return top; } bool StackEmpty(LinkList s)//判断栈是否为空,0代表空 { if(s==NULL) return 0; else return 1; } LinkList Pushead(LinkList s,int x)//入栈 { LinkList q,top=s; q=(LinkList)malloc(sizeof(Node1)); q->data=x; q->next=top; top=q; return top; } LinkList Pop(LinkList s,int &e)//出栈 { if(!StackEmpty(s)) { printf("栈为空。"); } else { e=s->data; LinkList p=s; s=s->next; free(p); } return s; } void DisplayStack(LinkList s)//遍历输出栈中元素 { if(!StackEmpty(s)) printf("栈为空。"); else { wheadile(s!=NULL) { cout<<s->data<<" "; s=s->next; } cout<<endl; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 //2.采用顺序存储实现栈的初始化、入栈、出栈操作。 int StackEmpty(int t)//判断栈S是否为空 { SqStack.top=t; if (SqStack.top==0) return 0; else return 1; } int InitStack() { SqStack.top=0; return SqStack.top; } int pushead(int t,int e) { SqStack.top=t; SqStack.base[++SqStack.top]=e; return SqStack.top; } int pop(int t,int *e)//出栈 { SqStack.top=t; if(!StackEmpty(SqStack.top)) { printf("栈为空."); return SqStack.top; } *e=SqStack.base[s.top]; SqStack.top--; return SqStack.top; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //3.采用链式存储实现队列的初始化、入队、出队操作。 LinkList InitQueue()//创建 { LinkList head; head->rear=(LinkQueue)malloc(sizeof(Node)); head->front=head->rear; head->front->next=NULL; return head; } void deleteEle(LinkList head,int &e)//出队 { LinkQueue p; p=head->front->next; e=p->data; head->front->next=p->next; if(head->rear==p) head->rear=head->front; free(p); } void EnQueue(LinkList head,int e)//入队 { LinkQueue p=(LinkQueue)malloc(sizeof(Node)); p->data=e; p->next=NULL; head->rear->next=p; head->rear=p; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //4.采用顺序存储实现循环队列的初始化、入队、出队操作。 bool InitQueue(SqQueue &head)//创建队列 { head.data=(int *)malloc(sizeof(int)); head.front=head.rear=0; return 1; } bool EnQueue(SqQueue &head,int e)//入队 { if((head.rear+1)%MAXQSIZE==head.front) { printf("队列已满\n"); return 0; } head.data[head.rear]=e; head.rear=(head.rear+1)%MAXQSIZE; return 1; } int QueueLengthead(SqQueue &head)//返回队列长度 { return (head.rear-head.front+MAXQSIZE)%MAXQSIZE; } bool deleteEle(SqQueue &head,int &e)//出队 { if(head.front==head.rear) { cout<<"队列为空!"<<endl; return 0; } e=head.data[head.front]; head.front=(head.front+1)%MAXQSIZE; return 1; } int gethead(SqQueue head)//得到队列头元素 { return head.data[head.front]; } int QueueEmpty(SqQueue head)//判断队列是否为空 { if (head.front==head.rear) return 1; else return 0; } void travelQueue(SqQueue head)//遍历输出 { wheadile(head.front!=head.rear) { printf("%d ",head.data[head.front]); head.front=(head.front+1)%MAXQSIZE; } cout<<endl; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 //5.在主函数中设计一个简单的菜单,分别测试上述算法。 int main() { LinkList top=CreateStack(); int x; wheadile(scanf("%d",&x)!=-1) { top=Pushead(top,x); } int e; wheadile(StackEmpty(top)) { top=Pop(top,e); printf("%d ",e); }//以上是链栈的测试 int top=InitStack(); int x; wheadile(cin>>x) top=pushead(top,x); int e; wheadile(StackEmpty(top)) { top=pop(top,&e); printf("%d ",e); }//以上是顺序栈的测试 LinkList Q; Q=InitQueue(); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q,x); } int e; wheadile(Q) { deleteEle(Q,e); printf("%d ",e); }//以上是链队列的测试 SqQueue Q1; InitQueue(Q1); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q1,x); } int e; wheadile(QueueEmpty(Q1)) { deleteEle(Q1,e); printf("%d ",e); } return 0; }
上传时间: 2018-05-09
上传用户:123456..
基于MSP430和STM32无线通信系统的设
上传时间: 2018-05-15
上传用户:lili8899xyz
function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta) %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta) %该函数用有限差分法求解有两种介质的正方形区域的二维拉普拉斯方程的数值解 %函数返回迭代因子、迭代次数以及迭代完成后所求区域内网格节点处的值 %a为正方形求解区域的边长 %r1,r2分别表示两种介质的电导率 %up,under分别为上下边界值 %num表示将区域每边的网格剖分个数 %deta为迭代过程中所允许的相对误差限 n=num+1; %每边节点数 U(n,n)=0; %节点处数值矩阵 N=0; %迭代次数初值 alpha=2/(1+sin(pi/num));%超松弛迭代因子 k=r1/r2; %两介质电导率之比 U(1,1:n)=up; %求解区域上边界第一类边界条件 U(n,1:n)=under; %求解区域下边界第一类边界条件 U(2:num,1)=0;U(2:num,n)=0; for i=2:num U(i,2:num)=up-(up-under)/num*(i-1);%采用线性赋值对上下边界之间的节点赋迭代初值 end G=1; while G>0 %迭代条件:不满足相对误差限要求的节点数目G不为零 Un=U; %完成第n次迭代后所有节点处的值 G=0; %每完成一次迭代将不满足相对误差限要求的节点数目归零 for j=1:n for i=2:num U1=U(i,j); %第n次迭代时网格节点处的值 if j==1 %第n+1次迭代左边界第二类边界条件 U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j)); end if (j>1)&&(j U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j)); U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的网格节点处的值 end if i==n+1-j %第n+1次迭代两介质分界面(与网格对角线重合)第二类边界条件 U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1))); end if j==n %第n+1次迭代右边界第二类边界条件 U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j)); end end end N=N+1 %显示迭代次数 Un1=U; %完成第n+1次迭代后所有节点处的值 err=abs((Un1-Un)./Un1);%第n+1次迭代与第n次迭代所有节点值的相对误差 err(1,1:n)=0; %上边界节点相对误差置零 err(n,1:n)=0; %下边界节点相对误差置零 G=sum(sum(err>deta))%显示每次迭代后不满足相对误差限要求的节点数目G end
标签: 有限差分
上传时间: 2018-07-13
上传用户:Kemin